import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const lang = navigator.appName === 'Netscape' ? navigator.language : navigator.userLanguage;
let config = {};
window.setLang = (_lang) => {
      if (window.lang === _lang) return;
      window.lang = _lang;
      switch (_lang) {
          case 'zh-CN':
          case 'zh-SG':
              config = {
                  name: '搜索酱',
                  generalBehavior: '通用行为',
                  appearance: '外观',
                  searchRules: '搜索和规则',
                  shortcuts: '快捷键',
                  dragDropSearch: '拖拽搜索',
                  inPage: '页内行为',
                  lang: '语言',
                  setLang: '设置语言',
                  outOfDate: '发现新版本，点击前往更新',
                  blacklist: '黑名单',
                  description: '详细描述',
                  moreOptions: '更多选项',
                  showIcon: '显示分组',
                  hideIcon: '隐藏分组',
                  rulesStore: '搜索引擎仓库',
                  import: '导入设置',
                  importFromClipboard: '从剪贴板导入',
                  exportTitle: '导出配置，单击导出搜索引擎配置，长按导出完整配置',
                  exportCache: '导出图标缓存',
                  general: '常规设置',
                  searchEngines: '搜索引擎',
                  exportConfig: '导出设置',
                  presetGroupName: '预置分组名',
                  presetGroupValue: '预置分组内容',
                  addGroup: '添加预置分组',
                  addGroupTips: '添加一组预置高亮词，以在不同场景重复调用',
                  findInPage: '页内查找',
                  customSearch: '划词搜索',
                  about: '关于',
                  override: '是否覆盖当前配置？',
                  showInSearchEngine: '高亮搜索引擎页面',
                  showInSearchEngineTips: '在搜索引擎结果页高亮关键词',
                  showInSearchJumpPage: '高亮搜索引擎页面打开的站点',
                  showInSearchJumpPageTips: '在搜索引擎页面点击打开的站点内高亮关键词',
                  currentTypeFirst: '置顶当前分组',
                  currentTypeFirstTips: '开启后，当前分组将前移至第一位',
                  mouseLeaveToHide: '鼠标移开时自动隐藏',
                  mouseLeaveToHideTips: '当鼠标从搜索条或者搜索磁贴上移开时自动隐藏搜索酱',
                  limitInPageLen: '限制关键词最小长度',
                  limitInPageLenTips: '不对长度小于此值的关键词进行高亮',
                  ignoreWords: '忽略关键词列表',
                  inPageWordsStyles: '关键词样式',
                  inPageWordsAddStyles: '自定义关键词CSS，数组内按顺序指向对应关键词',
                  defaultPicker: '自动开启元素选择',
                  defaultPickerTips: '打开搜索输入框时自动开启元素选择',
                  emptyAfterCloseInput: '关闭时清空高亮',
                  emptyAfterCloseInputTips: '关闭搜索输入框时清空高亮关键词',
                  altToHighlight: 'Alt 划选立即高亮',
                  altToHighlightTips: '使用搜索输入框的页内搜索功能时，使用 Alt 划选后立即高亮',
                  disableInputOnWords: '划选文字时不弹出搜索输入框',
                  disableInputOnWordsTips: '正在划选文字时使用快捷键不弹出搜索输入框，仅显示搜索条',
                  inPageRule: '站点自动高亮规则',
                  errorNoType: '请输入分组名',
                  errorSameType: '分组名不能重复',
                  editType: '编辑分组',
                  typeName: '分组名',
                  typeIcon: '分组图标',
                  category: '分组',
                  iconTips: '图标可使用 FontAwsome、图片链接或者 base64 代码',
                  typeMatch: '网址匹配',
                  typeEnableSelTxt: '指向选择文字',
                  typeEnableSelImg: '指向图片',
                  typeEnableSelAudio: '指向音频',
                  typeEnableSelVideo: '指向视频',
                  typeEnableSelLink: '指向链接',
                  typeEnableSelPage: '指向页面',
                  typeOpenInNewTab: '启用后该组链接将默认在新窗口打开',
                  openSelect: '打开选项',
                  openInNewTabOption: '新标签页打开',
                  openInCurrentOption: '当前页打开',
                  openInBackOption: '后台标签页打开',
                  openInDefaultOption: '默认',
                  openInIncognitoOption: '隐身窗口打开',
                  openInMinWindowOption: '小窗口打开',
                  showCurrent: '显示当前站点',
                  showCurrentTips: '匹配到当前站点时，不隐藏当前站点图标',
                  delete: '删除',
                  deleteOk: '删除完毕',
                  cancel: '取消',
                  edit: '编辑',
                  add: '新增',
                  editSite: '编辑站点',
                  addSite: '新增站点',
                  addType: '新增分组',
                  siteName: '站点名',
                  siteUrl: '站点 URL',
                  siteIcon: '站点图标',
                  siteKeywords: '搜索词提取',
                  keywordRegTips: '单个关键词：wd；多个：wd|qw|key；正则分组：(?:wd|w)/(.*?)\\b；选择器：input#su',
                  kwFilter: '筛选正则',
                  kwFilterTips: '搜索词或者指向链接的筛选正则，当对象文字或者链接不匹配时隐藏该引擎；在开头使用 @{sel} 可筛选选择器为 sel 的元素',
                  siteMatch: '网址匹配',
                  siteMatchTips: '根据页面网址的正则匹配当前引擎，设为 0 强制隐藏该站',
                  siteCharset: '站点编码',
                  toolbarPosition: '搜索条位置',
                  portrait: '纵向',
                  horizontal: '横向',
                  openInNewTab: '默认在新标签页打开链接',
                  openInNewTabTips: '启用后链接将全部默认在新标签页打开',
                  enableInPage: '启用划词搜索',
                  enableInPageTips: '启用后选择文字并长按鼠标右键可调出搜索条',
                  bindFunctionKey: '按住此功能键单击鼠标右键可立即唤出当前分组的磁贴',
                  ctrlKey: 'Ctrl键',
                  altKey: 'Alt键',
                  shiftKey: 'Shift键',
                  metaKey: 'meta键',
                  configContent: '设置源码',
                  batchOpenConfirm: '批量搜索确认框',
                  batchOpenConfirmDefault: '默认',
                  batchOpenConfirmAlways: '总是需要确认',
                  batchOpenConfirmNo: '不需要确认',
                  copy: '复制',
                  save: '保存',
                  autoClose: '自动合上分组',
                  autoDelay: '隐藏延时',
                  needName: '需要名称',
                  needUrl: '需要 URL',
                  wrongImg: '非有效图标地址',
                  overOpen: '鼠标划过时分组自动展开',
                  overOpenTips: '选中此项则当鼠标划过分组图标，对应分组将自动展开',
                  selectToShow: '划选立即调用磁贴',
                  selectToShowTips: '启用后划选立即调出磁贴',
                  autoCloseTips: '启用之后一旦鼠标离开搜索条，已打开的分组抽屉将会自动合上',
                  shortcutOption: '搜索引擎快捷键',
                  onEnginePage: '仅在搜索引擎页面生效',
                  shortcut: '快捷键',
                  siteShotcut: '搜索快捷键',
                  switchSitesKey: '当前分组内引擎切换快捷键，仅当匹配到当前引擎时有效',
                  switchSitesPreKey: '向前切换快捷键',
                  switchSitesNextKey: '向后切换快捷键',
                  initShow: '默认拉出搜索条',
                  initShowTips: '默认拉出搜索条，鼠标划过后再贴边隐藏',
                  configPage: '默认设置页',
                  configPageTips: '将当前页面设为默认设置页',
                  alwaysShow: '总是显示搜索条',
                  alwaysShowTips: '即使没有匹配到搜索引擎也显示搜索条',
                  presetCss: '预置样式',
                  presetCssTips: '选择后载入预置样式',
                  customCss: '自定义样式',
                  replaceCss: '确定要替换当前编辑的样式吗？',
                  enableInInput: '监听输入框',
                  enableInInputTips: '启用后，在输入框内生效',
                  fontAwesomeCss: 'FontAwesome CDN地址',
                  bgUrl: '展开模式的背景图地址',
                  nobatch: '不参与批量打开',
                  hideNotMatch: '非当前引擎则隐藏该项',
                  typeMatchTips: '根据正则筛选当前分组，仅在匹配站点显示该分组，设为 0 隐藏该分组',
                  siteUrlTips: '%s 查询词; %t 目标链接; %u 页面地址; %h 页面域名',
                  customSize: '缩放搜索条',
                  tilesZoom: '缩放磁贴',
                  tipsZoom: '缩放提示文本',
                  zoomDrag: '缩放拖拽圆盘',
                  typeOpenTime: '分组展开耗时',
                  longPressTime: '长按时间',
                  typeShotcut: '批量打开快捷键',
                  enableRightMouse: '启用鼠标右键长按',
                  enableRightMouseTips: '启用后，在目标对象上长按鼠标右键可唤出搜索条',
                  enableLeftMouse: '启用鼠标左键',
                  enableLeftMouseTips: '启用后，在目标对象上单击鼠标左键可唤出搜索磁贴',
                  enableMiddleMouse: '启用鼠标中键',
                  enableMiddleMouseTips: '启用后，在目标对象上单击鼠标中键可唤出搜索磁贴',
                  longPressTile: '使用搜索磁贴代替搜索条',
                  longPressTileTips: '启用后，长按唤出的搜索条将替换为磁贴',
                  hideTileType: '隐藏磁贴中的分组图标',
                  hideTileTypeTips: '启用后，磁贴中的分组图标将会被隐藏',
                  cacheSwitch: '缓存图标',
                  sameSiteName: '在【#t#】下存在同名站点',
                  sameShortcut: '【#t#】已经绑定了相同快捷键',
                  noIcons: '纯文本模式',
                  noIconsTips: '隐藏图标，仅显示纯文本',
                  showEngineWords: '显示引擎名',
                  showEngineWordsTips: '在引擎图标下方显示引擎名',
                  noAni: '禁止动画效果',
                  noAniTips: '禁止所有动画效果',
                  quickAddRule: '快速添加搜索引擎',
                  quickAddRuleTips: '按住 Ctrl + Alt 点击任意搜索框快速添加搜索引擎',
                  syncBuild: '添加引擎后立即生效',
                  syncBuildTips: '监听配置变化，在添加引擎后立即生效，否则在页面刷新后生效',
                  searchMycroft: '💎 在 mycroftproject 上搜索其他人编辑好的搜索引擎并一键导入，例如：“谷歌学术”',
                  showSiteLists: '显示引擎列表',
                  showSiteListsTips: '启用后将在分组图标旁启用引擎列表面板',
                  alwaysShowSiteLists: '总是显示引擎列表',
                  alwaysShowSiteListsTips: '启用后，分组抽屉打开时也会显示引擎列表',
                  disableTypeOpen: '禁用分组点击展开',
                  disableTypeOpenTips: '点击分组后不再展开，而是显示引擎列表',
                  disableAutoHighlight: '禁用自动高亮的站点，一行一条',
                  historyLength: '历史站点数',
                  historyLengthTips: '在默认展开的分组末尾插入数个最近访问的站点',
                  historyInsertFirst: '将历史站点插入到分组开头',
                  historyInsertFirstTips: '将最近访问的站点插入到分组开头，否则插入到末尾',
                  shiftLastUsedType: '前移上次使用的分组',
                  shiftLastUsedTypeTips: '将上次使用的分组前移至当前分组之后',
                  sortType: '自动排序分组',
                  sortTypeTips: '自动按照访问次数重新排序分组',
                  sortSite: '自动排序引擎',
                  sortSiteTips: '自动按照访问次数重新排序分组内的引擎',
                  multiline: '多行搜索，选取多行文字时，以换行符分隔，按行搜索',
                  multilineLabel: '开关',
                  multilineGap: '搜索间隔',
                  disable: '禁用',
                  enable: '启用',
                  ask: '询问',
                  filterEngine: '筛选引擎',
                  verifyResult: '验证结果',
                  verifyBtn: '批量验证所有引擎可用性',
                  verifying: '验证中……',
                  verifyFinish: '验证完成',
                  batchAction: '批量操作',
                  selectAll: '全选',
                  invert: '反选',
                  deleteConfirm: '你确定要删除这些站点吗？',
                  moveTo: '移动至',
                  moveToConfirm: '你确定要将这些站点移动至【#t#】吗?',
                  autoHide: '自动隐藏搜索条',
                  autoHideTips: '达到上方设置延时之后，自动隐藏搜索条',
                  autoHideAll: '完全隐藏',
                  autoHideAllTips: '隐藏时使得搜索条完全消失',
                  unsetTips: '未设置',
                  resizePageTips: '不隐藏并且收缩页面',
                  minSizeMode: '极简模式',
                  minSizeModeTips: '开启后，搜索条将只显示当前分组，直至鼠标划过',
                  dragToSearch: '开启拖拽搜索',
                  dragToSearchTips: '开启后拖拽文字、链接或者图片进行搜索，内圈为当前分组(即首个划词/搜图/链接/页面分组)前 6 个站点，可自行前往搜索引擎标签页修改，外圈为最近使用的站点',
                  sameSiteUrl: '站点Url不能重复',
                  clone: '克隆',
                  cloneConfirm: '你确定要将这些站点克隆至 【#t#】?',
                  cloneAction: '你想要将它们克隆成一个集合吗?',
                  groupName: '集合名',
                  donate: '你好！我是 Hoothin，也是 SearchJumper 的作者。\n\n我很高兴能与大家分享 SearchJumper，这是一个完全开源免费的项目。虽然它的开发耗费了我大量的时间，但只要有人能从中获得帮助，一切都是值得的。\n\n如果您觉得 SearchJumper 对您有所帮助，并且愿意支持我的努力，我真心希望您考虑以下几种方式来夸夸我。您的支持将是我前进的动力，让我能够继续改进和提供更好的作品。\n\n- 捐赠：您可以考虑通过捐赠来支持 SearchJumper 的未来发展。即使是一小笔捐款，都将对我产生巨大的鼓舞和激励。\n- 反馈和分享：如果您有任何有关 SearchJumper 的反馈或建议，或者愿意与他人分享您的使用体验，那将是我最开心的事情。您的反馈将帮助我不断改进和优化 SearchJumper，让更多的人受益。\n- 社区参与：欢迎加入 SearchJumper 的 Discord 频道，与其他用户一起分享您的见解和经验。这是一个互相学习和支持的平台，您的参与将使社区更加繁荣。\n\n再次感谢您对 SearchJumper 的支持！我将竭尽全力优化改进这个项目。谢谢您的捐赠和夸奖，我由衷感激！',
                  share: '使用说明',
                  importBookmarks: '导入浏览器书签',
                  sync: 'Webdav 同步',
                  host: '服务器地址',
                  username: '用户名',
                  password: '密码',
                  path: '路径',
                  syncTips: 'Webdav 服务器需要支持自设 cors（不支持坚果云等），自行添加 allowed_hosts: https://hoothin.github.io',
                  expandType: '展开分组',
                  expandTypeTips: '展开分组，不隐藏同一分组中超出数量的引擎',
                  expandTypeLength: '显示引擎数',
                  expandTypeLengthTips: '隐藏超出此数量的引擎',
                  jsonToolong: '站点数据过于庞大，是否继续格式化为JSON文本？',
                  imgTooBig: '图片大于50kb，可能造成卡顿，是否继续上传？',
                  cacheSwitchTips: '在后台缓存图标为 base64 图片至配置，以免 icon 请求拉低性能。注意开始缓存时会弹出跨域请求，缓存过程可能卡顿，此时勿关闭配置页',
                  searchFontawesome: '🚩 搜索 FontAwesome 图标用于分组项',
                  localAppAddBtn: '添加自定义本地应用调用',
                  localApp: '本地应用调用',
                  localAppCall: '调用命令',
                  localAppName: '自定义调用头，可留空，编辑前注意备份注册表',
                  localAppUnknowCall: '无法分析此命令，请检查命令或者手动构造注册表',
                  localAppWrongName: '调用头只能输入数字或者字母',
                  callInputKey: '唤出搜索输入框的快捷键',
                  showAllKey: '唤出全部展开模式的快捷键',
                  defaultFindTab: '默认显示页内查找',
                  defaultFindTabTips: '打开搜索输入框时默认显示页内查找标签，否则默认显示站点筛选标签',
                  globalSearchNow: '立即搜索所有标签页',
                  globalSearchNowTips: '当点击固定按钮时，立即在所有标签页搜索关键词，否则仅搜索当前活动标签页，可能会影响性能，谨慎开启',
                  geneRegFile: '生成注册表补丁',
                  dragHistory: '拖拽轮盘外圈',
                  hideDragHistoryTips: '隐藏拖拽轮盘中用于存放最近 10 个历史访问引擎的外圈',
                  reuseDragHistoryTips: '拖拽轮盘外圈继续显示当前分组超出 6 个之外的引擎',
                  disableAutoOpen: '禁用分组自动展开',
                  disableAutoOpenTips: '启用后，调出搜索条之后，对应分组将不再自动展开',
                  minPopup: '最小化搜索磁贴',
                  minPopupTips: '启用后，划词磁贴将只显示一个分组图标，直至鼠标划过',
                  minPopupDisable: '禁用',
                  minPopupEnable: '启用',
                  minPopupInput: '仅在输入框上启用',
                  hidePopup: '禁用搜索磁贴',
                  hidePopupTips: '开启后，划词磁贴将会禁用，划词时以完整搜索条取代',
                  numPerLine: '磁贴每行引擎数',
                  numPerLineTips: '设置磁贴每一行显示的引擎数量',
                  tileOffset: '磁贴偏移量',
                  tileOffsetTips: '使磁贴偏移一段距离，以留出空间给其他划词扩展',
                  limitPopupLen: '划词磁贴字数限制',
                  limitPopupLenTips: '当划选文字长度小于此字数时不显示磁贴',
                  hideOnSearchEngine: '在搜索引擎页面隐藏',
                  hideOnSearchEngineTips: '在搜索引擎页面搜索条将不再自动显示',
                  suggestType: '搜索联想词的引擎',
                  install: '安装地址',
                  allPage: '展开所有引擎',
                  allPageTips: '可通过 https://search.hoothin.com/all?kw=keywords&engine=someengine&self=1 在浏览器外部调用，详见 Github',
                  pinyinAddon: '拼音扩展',
                  spellAddon: '拼写扩展',
                  discord: 'Discord 讨论群组',
                  templateTitle: '模板文本',
                  templateTips: '模板文本，用 %template{模板名} 调用，适用于存放密钥',
                  templateName: '模板名',
                  templateValue: '模板内容',
                  freeWebdav: '获取 WebDAV 同步服务',
                  freeWebDavShare: '分享引擎列表',
                  freeWebdavConfirm: '是否获取账号使用 WebDav 同步功能？请注意，该功能为随性分享，不能保证稳定可用，请勿用于非法用途。如需稳定可控，请自行搭建 WebDav 服务器。',
                  requestAccount: '申请账号中，请耐心等待服务器下发',
                  requestStatus: '正在查询账号当前状态',
                  webdavDisabled: 'Webdav 账号已过期',
                  closePopupWhenClick: '点击主窗口时关闭打开的小窗口',
                  closePopupWhenClickTips: '打开方式选择小窗口时，点击主窗口将关闭打开的小窗口',
                  rate: '非常感谢您对搜索酱的使用，恳请您在插件商店中给予五星评价，这对我意义重大。如有任何问题或建议，欢迎随时联系我。',
                  popupSize: '小窗口位置和大小',
                  popupWidth: '宽度',
                  popupHeight: '高度',
                  popupLeft: '左边距',
                  popupTop: '上边距',
                  query: '查询状态',
                  shareText: '我的搜索酱合集： https://search.hoothin.com/#t#',
                  shareTextPw: ' 访问密码：#t#',
                  shareTips: '当前分享页面：',
                  sharePassword: '分享密码，可留空',
                  shareTitleword: '分享标题，可留空',
                  paramTitle: '搜索参数',
                  param: '参数',
                  details: '详述',
                  param_s: '搜索关键词',
                  param_S: '最近一次的搜索关键词',
                  param_sl: '小写字母搜索词',
                  param_su: '大写字母搜索词',
                  param_sr: '未转码的搜索关键词',
                  param_ss: '搜索关键词转换为简体中文，需要安装我的【简繁自由切换】 https://greasyfork.org/scripts/24300',
                  param_st: '搜索关键词转换为繁体中文，同上',
                  param_se: '搜索关键词执行 escape',
                  param_e: '当前页面编码',
                  param_c: '客户端: pc,mobile',
                  param_u: '当前网站 url，指向链接或图片时为对应 url (链接优先)。%U: 该项的 URI 编码',
                  param_h: '当前网站 host',
                  param_t: '当前指向链接或者图片的地址 (图片优先)。%T: 该项的 URI 编码',
                  param_b: '指向对象地址去除 http头。%B: 该项的 URI 编码',
                  param_n: '指向对象的 title 或 alt 或 网站标题',
                  param_i: '指向图片的 base64，未指向图片时尝试获取剪贴板图片',
                  param_sre: '用正则替换搜索关键词/页面或链接url/图片src，例如 %sr.replace(/[^\\d]/g, "").replace(/(\\d)/g, "$1 ") 代表提取原始关键词中所有数字，并以空格分隔，支持 %s %sl %sr %su %t %u',
                  param_ssplit: '多行搜索参数，%s[]代表按换行或者空格分隔后依次取下一项，%s[-1]代表逆序依次取下一项，%s[0]代表指定第一项，%s[all]代表分隔后批量搜索，%s[1|@]代表以@分隔并且指定第二项，支持replace，例如%s[].replace(/(\\d)/,"a$1")。没有关键词时会尝试读取剪贴板',
                  param_p1: 'post 参数体，例如 %p{x=1&y=%s}',
                  param_p2: 'post 但不跳转',
                  param_p3: '页内 post，可在页面之内使用【css 选择器或者 xpath】填写参数提交查询，适用于不开放GET/POST接口的网站，例如 #p{#input=%u&sleep(500)&click(.submit)}, 代表在"#input"内输入指定url，然后等待500毫秒，最后点击".submit"。可在内容中使用 \\& \\= 来 表示 & =。wait(#input) 代表等待元素 #input 出现，wait(!.loading)代表等待元素 .loading 消失，call(alert("Hello")) 代表执行代码 alert("Hello")，支持 await。input 时 @ 代表当前输入框',
                  param_input: '输入占位，例如%input{请输入您的三围,90 55 90}。使用/创建下拉菜单，例如%input{请选择你的罩杯,A/B/C}。也可以分别添加描述，例如%input{请选择你的罩杯/稀有/绝佳/好大,A/B/C}',
                  param_group: '通过你已经创建的站点名批量打开，例如 ["雅虎搜索","谷歌搜索"]',
                  param_ele: '通过 css 选择器或者 xpath 抓取元素并返回文字内容，例如 %element{.mainTitle}，省略选择器时返回当前选中元素',
                  param_elep: '获取抓取到元素的属性值，例如 %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML)',
                  param_elere: '正则替换，例如 %element{.mainTitle}.prop(href).replace(/https/i,"")',
                  param_cp: '在开头使用"copy:"可以复制之后的所有字串',
                  param_paste: '在开头使用"paste:"可以将文本粘贴到输入框内当前位置，如果未指定参数则默认读取剪切板',
                  param_showTips: '在鼠标悬浮时立即在 tips 内显示所获取的 html 代码，如果返回数组则第二项为点击后复制的内容，第二项返回链接则点击后打开。可使用 fetch 跨域，使用 storage.getItem/storage.setItem 操作持久数据，name 获取引擎名。也可以使用简化模式，直接传入链接与模板，例如 showTips:https://api.xxx.xxx/xxx <i>{json.result|*%s} USD = %s RMB</i>，代表抓取 api.xxx.xxx 的数据，以 json 格式解析，并将 json.result 放入 <i> 模板后返回 tips。再例如 showTips:https://xxx.com/%sr <span>{title}</span><p>{.genre a|<mark>()</mark>}</p><img src="https://xxx.com{a.bigImage>img|src}"/> 代表抓取 xxx.com，获取页面标题、遍历所有 .genre a 元素的内容并分别创建 mark 元素、获取 a.bigImage>img 图片的 src 并创建 img 元素',
                  param_find: '页内查找高亮，例如 find:%s',
                  param_findadd: '添加目标关键词到指定页内高亮预置分组，例如 find.addto(reddit):%t.replace(/.*user/,"") 代表获取指定链接之后提取链接中 user 后参数添加进入 reddit 分组',
                  javascript: '执行 js 代码，window.keywords 代表关键词，window.targetElement 代表指向元素。如果当前页面无法执行页内代码，则可新建油猴脚本粘贴代码，导出方法到 window 下，通过方法名调用。例如 javascript:searchJumper_Function1',
                  param_date1: '当前时间戳（ms）',
                  param_date2: '对当前时间戳进行简单运算，例如%date{/1000 +604800}，代表一星期之后以秒计算的时间戳',
                  aboutContent: '平时工作中搜索引擎跳转功能用得很频繁，但尝试了相关的扩展，发现大多夹有私货。特别是国内公司做的插件，基本都有购物返链和隐私数据收集。\n而这只是一个简单功能，所以不如自己写一个啦。\n结果写配置页面耗费的精力数倍于脚本本身……🤦‍\n这个搜索引擎跳转支持自己拖拽定义位置，同时也支持站内搜索，多语言编码设置（例如shift-jis），划词搜索，以及配置导入导出。'
              }
              break;
          case 'zh-TW':
          case 'zh-HK':
              config = {
                  name: '搜尋醬',
                  generalBehavior: '通用行為',
                  appearance: '外觀',
                  searchRules: '搜尋和規則',
                  shortcuts: '快捷鍵',
                  dragDropSearch: '拖拽搜尋',
                  inPage: '頁內行為',
                  lang: '語言',
                  setLang: '設置語言',
                  outOfDate: '發現新版本，點擊前往更新',
                  blacklist: '黑名單',
                  description: '詳細描述',
                  moreOptions: '更多選項',
                  showIcon: '顯示分組',
                  hideIcon: '隱藏分組',
                  rulesStore: '搜尋引擎倉庫',
                  import: '導入設置',
                  importFromClipboard: '從剪貼板導入',
                  exportTitle: '導出配置，單擊導出搜尋引擎配置，長按導出完整配置',
                  exportCache: '導出圖標緩存',
                  general: '常規設置',
                  searchEngines: '搜尋引擎',
                  exportConfig: '導出設置',
                  presetGroupName: '預置分組名',
                  presetGroupValue: '預置分組內容',
                  addGroup: '添加預置分組',
                  addGroupTips: '添加一組預置高亮詞，以在不同場景重複調用',
                  findInPage: '頁内查找',
                  customSearch: '劃詞搜尋',
                  about: '關於',
                  override: '是否覆蓋目前配置？',
                  showInSearchEngine: '高亮搜尋引擎頁面',
                  showInSearchEngineTips: '在搜尋引擎結果頁高亮關鍵詞',
                  showInSearchJumpPage: '高亮搜尋引擎頁面開啟的站點',
                  showInSearchJumpPageTips: '在搜尋引擎頁面點選開啟的站點內高亮關鍵詞',
                  currentTypeFirst: '置頂當前分組',
                  currentTypeFirstTips: '開啟後，當前分組將前移至第一位',
                  mouseLeaveToHide: '滑鼠移開時自動隱藏',
                  mouseLeaveToHideTips: '當滑鼠從搜尋條或者搜索磁貼上移開時自動隱藏搜尋醬',
                  limitInPageLen: '限制關鍵詞最小長度',
                  limitInPageLenTips: '不對長度小於此值的關鍵詞進行高亮',
                  ignoreWords: '忽略關鍵詞列表',
                  inPageWordsStyles: '關鍵詞樣式',
                  inPageWordsAddStyles: '自定義關鍵詞CSS，數組内按順序指向對應關鍵詞',
                  defaultPicker: '自動開啟元素選擇',
                  defaultPickerTips: '打開搜尋輸入框時自動開啟元素選擇',
                  emptyAfterCloseInput: '關閉時清空高亮',
                  emptyAfterCloseInputTips: '關閉搜尋輸入框時清空高亮關鍵字',
                  altToHighlight: 'Alt 劃選立即高亮',
                  altToHighlightTips: '使用搜索輸入框的頁內搜尋功能時，使用 Alt 劃選後立即高亮',
                  disableInputOnWords: '劃選文字時不彈出搜尋輸入框',
                  disableInputOnWordsTips: '正在劃選文字時使用快速鍵不彈出搜尋輸入框，僅顯示搜尋條',
                  inPageRule: '站點自動高亮規則',
                  errorNoType: '請輸入分組名',
                  errorSameType: '分組名不能重複',
                  editType: '編輯分組',
                  typeName: '分組名',
                  typeIcon: '分組圖標',
                  category: '分組',
                  iconTips: '圖標可使用 FontAwsome、圖片連結或者 base64 代碼',
                  typeMatch: '網址匹配',
                  typeEnableSelTxt: '指向選擇文字',
                  typeEnableSelImg: '指向圖片',
                  typeEnableSelAudio: '指向音頻',
                  typeEnableSelVideo: '指向視頻',
                  typeEnableSelLink: '指向鏈接',
                  typeEnableSelPage: '指向頁面',
                  typeOpenInNewTab: '啟用後該組連結將默認在新窗口打開',
                  openSelect: '打開選項',
                  openInNewTabOption: '新標簽頁打開',
                  openInCurrentOption: '當前頁打開',
                  openInBackOption: '背景標簽頁打開',
                  openInDefaultOption: '默認打開選項',
                  openInIncognitoOption: '隱身窗口打開',
                  openInMinWindowOption: '小窗口打開',
                  showCurrent: '顯示當前站點',
                  showCurrentTips: '匹配到當前站點時，不隱藏當前站點圖標',
                  delete: '刪除',
                  deleteOk: '刪除完畢',
                  cancel: '取消',
                  edit: '編輯',
                  add: '新增',
                  editSite: '編輯站點',
                  addSite: '新增站點',
                  addType: '新增分組',
                  siteName: '站點名',
                  siteUrl: '站點 URL',
                  siteIcon: '站點圖標',
                  siteKeywords: '搜尋詞提取',
                  keywordRegTips: '單個關鍵詞：wd；多個：wd|qw|key；正則分組：(?:wd|w)/(.*?)\\b；選擇器：input#su',
                  kwFilter: '篩選正則',
                  kwFilterTips: '搜尋詞或者指向連結的篩選正則，當對象文字或者連結不匹配時隱藏該引擎；在開頭使用 @{sel} 可篩選選擇器為 sel 的元素',
                  siteMatch: '網址匹配',
                  siteMatchTips: '根據頁面網址的正則匹配當前引擎，設爲 0 强制隱藏該站',
                  siteCharset: '站點編碼',
                  toolbarPosition: '搜尋條位置',
                  portrait: '縱向',
                  horizontal: '橫向',
                  openInNewTab: '默認在新標籤頁打開連結',
                  openInNewTabTips: '啟用後連結將全部默認在新標籤頁打開',
                  enableInPage: '啟用劃詞搜尋',
                  enableInPageTips: '啟用後選擇文字並長按滑鼠右鍵可調出搜尋條',
                  bindFunctionKey: '按住此功能鍵單擊滑鼠右鍵可立即喚出當前分組的磁貼',
                  ctrlKey: 'Ctrl鍵',
                  altKey: 'Alt鍵',
                  shiftKey: 'Shift鍵',
                  metaKey: 'meta鍵',
                  configContent: '設置源碼',
                  batchOpenConfirm: '批量搜尋確認框',
                  batchOpenConfirmDefault: '默認',
                  batchOpenConfirmAlways: '總是需要確認',
                  batchOpenConfirmNo: '不需要確認',
                  copy: '複製',
                  save: '保存',
                  autoClose: '自動合上分組',
                  autoDelay: '隱藏延時',
                  needName: '需要名稱',
                  needUrl: '需要 URL',
                  wrongImg: '非有效圖標地址',
                  overOpen: '滑鼠划過時分組自動展開',
                  overOpenTips: '選中此項則當滑鼠划過分組圖標，對應分組將自動展開',
                  selectToShow: '劃選立即調用磁貼',
                  selectToShowTips: '啟用後劃選立即調出磁貼',
                  autoCloseTips: '啟用之後一旦滑鼠離開搜尋條，已打開的分組抽屜將會自動合上',
                  shortcutOption: '搜尋引擎快速鍵',
                  onEnginePage: '僅在搜尋引擎頁面生效',
                  shortcut: '快速鍵',
                  siteShotcut: '搜尋快速鍵',
                  switchSitesKey: '當前分組內引擎切換快速鍵，僅當匹配到當前引擎時有效',
                  switchSitesPreKey: '向前切換快速鍵',
                  switchSitesNextKey: '向後切換快速鍵',
                  initShow: '默認拉出搜尋條',
                  initShowTips: '預設立即拉出搜尋條，鼠標划過后再貼邊隱藏',
                  configPage: '預設設定頁',
                  configPageTips: '將目前頁面設為預設設定頁',
                  alwaysShow: '總是顯示搜尋條',
                  alwaysShowTips: '即使沒有匹配到搜尋引擎也顯示搜尋條',
                  presetCss: '預置樣式',
                  presetCssTips: '選擇后載入預置樣式',
                  customCss: '自定義樣式',
                  replaceCss: '確定要替換當前編輯的樣式嗎？',
                  enableInInput: '監聽輸入框',
                  enableInInputTips: '啓用後，在輸入框内生效',
                  fontAwesomeCss: 'FontAwesome CDN位址',
                  bgUrl: '展開模式的背景圖位址',
                  nobatch: '不參與批量打開',
                  hideNotMatch: '非當前引擎則隱藏該項',
                  typeMatchTips: '根據正則篩選當前分組，僅在匹配站點顯示該分組，設爲 0 隱藏該分組',
                  siteUrlTips: '%s 查詢詞; %t 目標連結; %u 頁面地址; %h 頁面域名',
                  customSize: '縮放搜尋條',
                  tilesZoom: '縮放磁貼',
                  tipsZoom: '縮放提示文本',
                  zoomDrag: '縮放拖曳圓盤',
                  typeOpenTime: '分組展開耗時',
                  longPressTime: '長按時間',
                  typeShotcut: '批量打開快速鍵',
                  enableRightMouse: '啟用滑鼠右鍵長按',
                  enableRightMouseTips: '啟用後，在目標對象上長按滑鼠右鍵可喚出搜尋條',
                  enableLeftMouse: '啟用滑鼠左鍵',
                  enableLeftMouseTips: '啟用後，在目標對象上單擊滑鼠左鍵可喚出搜尋磁貼',
                  enableMiddleMouse: '啟用滑鼠中鍵',
                  enableMiddleMouseTips: '啟用後，在目標對象上單擊滑鼠中鍵可喚出搜尋磁貼',
                  longPressTile: '使用搜尋磁貼取代搜尋條',
                  longPressTileTips: '啟用後，長按喚出的搜尋條將會被取代為磁貼',
                  hideTileType: '隱藏磁貼中的分組圖示',
                  hideTileTypeTips: '啟用後，磁貼中的分組圖示將會被隱藏',
                  cacheSwitch: '緩存圖標',
                  sameSiteName: '在【#t#】下存在同名站點',
                  sameShortcut: '【#t#】已經綁定了相同快速鍵',
                  noIcons: '純文本模式',
                  noIconsTips: '隱藏圖標，僅顯示純文本',
                  showEngineWords: '顯示引擎名',
                  showEngineWordsTips: '在引擎圖標下方顯示引擎名',
                  noAni: '禁止動畫效果',
                  noAniTips: '禁止所有動畫效果',
                  quickAddRule: '快速添加搜尋引擎',
                  quickAddRuleTips: '按住 Ctrl + Alt 點擊任意搜尋框快速添加搜尋引擎',
                  syncBuild: '新增引擎後立即生效',
                  syncBuildTips: '監聽設定變化，在新增引擎後立即生效，否則在頁面刷新後生效',
                  searchMycroft: '💎 在 mycroftproject 上搜尋其他人編輯好的搜尋引擎並一鍵導入',
                  showSiteLists: '顯示引擎列表',
                  showSiteListsTips: '啓用後將在分組圖標旁啓用引擎列表面板',
                  alwaysShowSiteLists: '總是顯示引擎列表',
                  alwaysShowSiteListsTips: '啟用後，分組抽屜打開時也會顯示引擎列表',
                  disableTypeOpen: '停用分組點擊展開',
                  disableTypeOpenTips: '點擊分組后不再展開，而是顯示引擎列表',
                  disableAutoHighlight: '停用自動高亮的站點，一行一條',
                  historyLength: '歷史站點數',
                  historyLengthTips: '在默認展開的分組末尾插入數個最近訪問的站點',
                  historyInsertFirst: '將歷史站點插入到分組開頭',
                  historyInsertFirstTips: '將最近訪問的站點插入到分組開頭，否則插入到末尾',
                  shiftLastUsedType: '前移上次使用的分組',
                  shiftLastUsedTypeTips: '將上次使用的分組前移至當前分組之後',
                  sortType: '自動排序分組',
                  sortTypeTips: '自動按照訪問次數重新排序分組',
                  sortSite: '自動排序引擎',
                  sortSiteTips: '自動按照訪問次數重新排序分組内的引擎',
                  multiline: '多行搜尋，選取多行文字時，以換行符分隔，按行搜尋',
                  multilineLabel: '開關',
                  multilineGap: '搜尋間隔',
                  disable: '禁用',
                  enable: '啟用',
                  ask: '詢問',
                  filterEngine: '篩選引擎',
                  verifyResult: '驗證結果',
                  verifyBtn: '批量驗證所有引擎可用性',
                  verifying: '驗證中……',
                  verifyFinish: '驗證完成',
                  batchAction: '批量操作',
                  selectAll: '全選',
                  invert: '反選',
                  deleteConfirm: '你確定要刪除這些站點嗎？',
                  moveTo: '移動至',
                  moveToConfirm: '你確定要將這些站點移動至【#t#】嗎?',
                  autoHide: '自動隱藏搜尋條',
                  autoHideTips: '達到上方設置延時之後，自動隱藏搜尋條',
                  autoHideAll: '完全隱藏',
                  autoHideAllTips: '隱藏時使得搜尋條完全消失',
                  unsetTips: '未設置',
                  resizePageTips: '不隱藏並收縮頁面',
                  minSizeMode: '極簡模式',
                  minSizeModeTips: '開啟後，搜尋條將只顯示當前分組，直至鼠標劃過',
                  dragToSearch: '開啟拖拽搜尋',
                  dragToSearchTips: '開啟後拖曳文字、連結或者圖片進行搜尋，內圈為當前分組(即首個劃詞/搜圖/連結/頁面分組)前 6 個引擎，可自行前往搜尋引擎標籤頁修改，外圈為最近使用的引擎',
                  sameSiteUrl: '站點Url不能重複',
                  clone: '克隆',
                  cloneConfirm: '你確定要將這些站點克隆至 【#t#】?',
                  cloneAction: '你想要將它們克隆成一個集合嗎?',
                  groupName: '集合名',
                  donate: '你好！ 我是 Hoothin，也是 SearchJumper 的作者。 \n\n我很高興能與大家分享 SearchJumper，這是一個完全開源免費的專案。 雖然它的開發耗費了我大量的時間，但只要有人能從中獲得幫助，一切都是值得的。 \n\n如果您覺得 SearchJumper 對您有所幫助，並且願意支持我的努力，我真誠地希望您考慮以下幾種方式來誇誇我。 您的支持將是我前進的動力，讓我能夠繼續改進並提供更好的作品。 \n\n- 捐贈：您可以考慮透過捐贈來支持 SearchJumper 的未來發展。 即使是一小筆捐款，都將對我產生巨大的鼓舞和激勵。 \n- 回饋與分享：如果您有任何有關 SearchJumper 的回饋或建議，或願意與他人分享您的使用體驗，那將是我最開心的事情。 您的回饋將幫助我不斷改進和優化 SearchJumper，讓更多的人受益。 \n- 社區參與：歡迎加入 SearchJumper 的 Discord 頻道，與其他用戶分享您的見解和經驗。 這是一個互相學習和支持的平台，您的參與將使社區更加繁榮。 \n\n再次感謝您對 SearchJumper 的支持！ 我將竭盡全力優化改進這個項目。 謝謝您的捐款和誇獎，我由衷感激！',
                  share: '使用説明',
                  importBookmarks: '導入瀏覽器書簽',
                  sync: 'Webdav 同步',
                  host: '伺服器地址',
                  username: '用戶名',
                  password: '密碼',
                  path: '路徑',
                  syncTips: 'Webdav 伺服器需要支援自設 cors，添加 allowed_hosts: https://hoothin.github.io',
                  expandType: '展開分組',
                  expandTypeTips: '展開分組，不隱藏同一分組中超出數量之外的引擎',
                  expandTypeLength: '顯示引擎數',
                  expandTypeLengthTips: '隱藏超出此數量的引擎',
                  jsonToolong: '站點數據過於龐大，是否繼續格式化為JSON文本？',
                  imgTooBig: '圖片大於50kb，可能造成卡頓，是否繼續上傳？',
                  cacheSwitchTips: '在後台緩存圖標為base64圖片。注意開始緩存時會彈出跨域請求，緩存過程可能卡頓，此時勿關閉配置頁',
                  searchFontawesome: '🚩 搜尋 FontAwesome 圖標用於分組項',
                  localAppAddBtn: '添加自定義本地應用調用',
                  localApp: '本地應用調用',
                  localAppCall: '調用命令',
                  localAppName: '自定義調用頭，可留空，編輯前注意備份注冊表',
                  localAppUnknowCall: '無法分析此命令，請檢查命令或者手動構造註冊表',
                  localAppWrongName: '調用頭只能輸入數字或者字母',
                  callInputKey: '喚出搜尋輸入框的快速鍵',
                  showAllKey: '喚出全部展開模式的快速鍵',
                  defaultFindTab: '默認顯示頁內查找',
                  defaultFindTabTips: '打開搜尋輸入框時默認顯示頁內查找標簽，否則默認顯示站點篩選標簽',
                  globalSearchNow: '立即搜尋所有標籤頁',
                  globalSearchNowTips: '當點擊固定按鈕時，立即在所有標籤頁搜尋關鍵詞，否則僅搜尋當前活動標籤頁，可能會影響性能，謹慎開啟',
                  geneRegFile: '生成註冊表補丁',
                  dragHistory: '拖曳輪盤外圈',
                  hideDragHistoryTips: '隱藏拖曳輪盤中用於存放最近 10 個歷史訪問引擎的外圈',
                  reuseDragHistoryTips: '拖曳輪盤外圈繼續顯示目前分組超出 6 個以外的引擎',
                  disableAutoOpen: '禁用分組自動展開',
                  disableAutoOpenTips: '啓用後，調出搜尋條之後，對應分組將不再自動展開',
                  minPopup: '最小化搜尋磁貼',
                  minPopupTips: '啟用後，劃詞磁貼將只顯示一個分組圖標，直至鼠標劃過',
                  minPopupDisable: '禁用',
                  minPopupEnable: '啟用',
                  minPopupInput: '僅在輸入框上啓用',
                  hidePopup: '禁用搜尋磁貼',
                  hidePopupTips: '開啟後，劃詞磁貼將會禁用，劃詞時以完整搜尋條取代',
                  numPerLine: '磁貼每行引擎數',
                  numPerLineTips: '設定磁貼每一行顯示的引擎數量',
                  tileOffset: '磁貼偏移量',
                  tileOffsetTips: '使磁貼偏移一段距離，以留出空間給其他劃詞擴展',
                  limitPopupLen: '劃詞磁貼字數限制',
                  limitPopupLenTips: '當劃選文字長度小於此字數時不顯示磁貼彈框',
                  hideOnSearchEngine: '在搜尋引擎頁面隱藏',
                  hideOnSearchEngineTips: '在搜尋引擎頁面搜尋條將不再自動顯示',
                  suggestType: '搜索聯想詞的引擎',
                  install: '安裝位址',
                  allPage: '展開所有引擎',
                  allPageTips: '可透過 https://search.hoothin.com/all?kw=keywords&engine=someengine&self=1 在瀏覽器外部調用，詳見 Github',
                  pinyinAddon: '拼音擴充',
                  spellAddon: '單詞擴充',
                  discord: 'Discord 討論群組',
                  templateTitle: '模板文本',
                  templateTips: '模板文本，用 %template{模板名} 調用，適用於存放密鑰',
                  templateName: '模板名',
                  templateValue: '模板内容',
                  freeWebdav: '獲取 WebDAV 同步服務',
                  freeWebDavShare: '分享引擎清單',
                  freeWebdavConfirm: '獲取帳號使用 WebDav 同步功能？ 請注意，此功能為隨性分享，無法保證穩定可用，請勿用於非法用途。 如需穩定可控，請自行建置 WebDav 伺服器。 ',
                  requestAccount: '申請帳號中，請耐心等待伺服器下發',
                  requestStatus: '正在查詢帳號目前狀態',
                  webdavDisabled: 'Webdav 帳號已過期',
                  closePopupWhenClick: '點擊主視窗時關閉開啟的小視窗',
                  closePopupWhenClickTips: '打開方式選擇小視窗時，點擊主視窗將關閉開啟的小視窗',
                  rate: '非常感謝您對搜尋醬的使用，懇請您在插件商店中給予五星評價，這對我意義重大。如有任何問題或建議，歡迎隨時與我聯絡。',
                  popupSize: '小視窗位置與大小',
                  popupWidth: '寬度',
                  popupHeight: '高度',
                  popupLeft: '左邊距',
                  popupTop: '上邊距',
                  query: '查詢狀態',
                  shareText: '我的搜尋醬合集： https://search.hoothin.com/#t#',
                  shareTextPw: ' 訪問密碼：#t#',
                  shareTips: '目前分享頁面：',
                  sharePassword: '分享密碼，可留空',
                  shareTitleword: '分享標題，可留空',
                  paramTitle: '搜尋參數',
                  param: '參數',
                  details: '詳述',
                  param_s: '搜尋關鍵詞',
                  param_S: '最近一次的搜尋關鍵詞',
                  param_sl: '小寫字母搜尋詞',
                  param_su: '大寫字母搜尋詞',
                  param_sr: '未轉碼的搜尋關鍵詞',
                  param_ss: '搜尋關鍵詞轉換爲簡體中文，需要安裝我的【繁簡自由切換】 https://greasyfork.org/scripts/24300',
                  param_st: '搜尋關鍵詞轉換爲正體中文，同上',
                  param_se: '搜尋關鍵詞執行 escape',
                  param_e: '當前頁面編碼',
                  param_c: '客戶端: pc,mobile',
                  param_u: '當前網站 url，指向鏈接或圖片時為對應 url (鏈接優先)。%U: 該項的 URI 編碼',
                  param_h: '當前網站 host',
                  param_t: '當前指向鏈接或者圖片的地址 (圖片優先)。%T: 該項的 URI 編碼',
                  param_b: '指向對像地址去除 http頭。%B: 該項的 URI 編碼',
                  param_n: '指向對像的 title 或 alt 或 網站標題',
                  param_i: '指向圖片的 base64，未指向圖片時嘗試取得剪貼簿圖片',
                  param_sre: '用正則替換搜尋關鍵詞/頁面或鏈接url/圖片src，例如 %sr.replace(/[^\\d]/g, "").replace(/(\\d)/g, "$1 ") 代表提取原始關鍵詞中所有數字，並以空格分隔，支持 %s %sl %sr %su %t %u',
                  param_ssplit: '多行搜尋參數，%s[]代表按換行或者空格分隔後依次取下一項，%s[-1]代表逆序依次取下一項，%s[0]代表指定第一項，%s[all]代表分隔後批量搜尋，%s[1|@]代表以@分隔並且指定第二項，支持replace，例如%s[].replace(/(\\d)/,"a$1")。沒有關鍵詞時會嘗試讀取剪貼板',
                  param_p1: 'post 參數體，例如 %p{x=1&y=%s}',
                  param_p2: 'post 但不跳轉',
                  param_p3: '頁内 post，可在頁面之内使用【css 選擇器或者 xpath】填寫參數提交查詢，適用於不開放GET/POST接口的網站，例如 #p{#input=%u&sleep(500)&click(.submit)}, 代表在"#input"内輸入指定url，然後等待500毫秒，最後點擊".submit"。可在内容中使用 \\& \\= 來 表示 & =。wait(#input) 代表等待元素 #input 出現，wait(!.loading)代表等待元素 .loading 消失，call(alert("Hello")) 代表執行程式碼 alert("Hello")，支援 await。input 時 @ 代表當前輸入框',
                  param_input: '輸入占位，例如%input{請輸入您的三圍,90 55 90}。使用/創建下拉菜單，例如%input{請選擇你的罩杯,A/B/C}。也可以分別添加描述，例如%input{請選擇你的罩杯/稀有/絕佳/好大,A/B/C}',
                  param_group: '透過你已經創建的站點名批量打開，例如 ["雅虎搜尋","谷歌搜尋"]',
                  param_ele: '透過 css 選擇器或者 xpath 抓取元素並返回文字内容，例如 %element{.mainTitle}，省略選擇器時返回當前選中元素',
                  param_elep: '獲取抓取到元素的屬性值，例如 %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML)',
                  param_elere: '正則替換，例如 %element{.mainTitle}.prop(href).replace(/https/i,"")',
                  param_cp: '在開頭使用"copy:"可以複製之後的所有字串',
                  param_paste: '在開頭使用"paste:"可以將文字貼到輸入框內當前位置，如果未指定參數則預設讀取剪切板',
                  param_showTips: '在鼠標懸浮時立即在 tips 內顯示所獲取的 html 代碼，如果返回陣列則第二項為點擊後復制的內容，第二項返回連結則點擊后打開。可使用 fetch 跨域，使用 storage.getItem/storage.setItem 操作持久數據，name 獲取引擎名。也可以使用簡化模式，直接傳入鏈接與模板，例如 showTips:https://api.xxx.xxx/xxx <i>{json.result|*%s} USD = %s RMB</i>，代表抓取 api.xxx.xxx 的數據，以 json 格式解析，並將 json.result 放入 <i> 模板後返回 tips。再例如 showTips:https://xxx.com/%sr <span>{title}</span><p>{.genre a|<mark>()</mark>}</p><img src="https://xxx.com{a.bigImage>img|src}"/> 代表抓取 xxx.com，獲取頁面標題、遍歷所有 .genre a 元素的內容並分別創建 mark 元素、獲取 a.bigImage>img 圖片的 src 並創建 img 元素',
                  param_find: '頁內查找高亮，例如 find:%s',
                  param_findadd: '添加目標關鍵詞到指定頁內高亮預置分組，例如 find.addto(reddit):%t.replace(/.*user/,"") 代表獲取指定鏈接之後提取鏈接中 user 後參數添加進入 reddit 分組',
                  javascript: '執行 js 程式碼，window.keywords 代表關鍵字，window.targetElement 代表指向元素。 如果目前頁面無法執行頁內程式碼，則可新建油猴腳本貼上程式碼，匯出方法到 window 下，透過方法名稱呼叫。 例如 javascript:searchJumper_Function1',
                  param_date1: '當前時間戳（ms）',
                  param_date2: '對當前時間戳進行簡單運算，例如%date{/1000 +604800}，代表一星期之後以秒計算的時間戳',
                  aboutContent: '平時工作中搜尋引擎跳轉功能用得很頻繁，但嘗試了相關的擴展，發現大多夾有私貨。\n而這只是一個簡單功能，所以不如自己寫一個啦。\n結果寫配置頁面耗費的精力數倍於腳本本身……🤦‍\n這個搜尋引擎跳轉支持自己拖拽定義位置，同時也支持站內搜尋，多語言編碼設置（例如shift-jis），劃詞搜尋，以及配置導入導出。'
              }
              break;
          case 'ja':
              config = {
                  name: '検索ちゃん',
                  generalBehavior: '一般動作',
                  appearance: '外観',
                  searchRules: '検索とルール',
                  shortcuts: 'ショートカット',
                  dragDropSearch: 'ドラッグ＆ドロップ検索',
                  inPage: 'ページ内動作',
                  lang: '言語',
                  setLang: '言語を設定',
                  outOfDate: 'スクリプトが古くなっています。クリックして更新してください',
                  blacklist: 'ブラックリスト',
                  description: '説明',
                  moreOptions: 'その他のオプション',
                  showIcon: 'カテゴリを表示',
                  hideIcon: 'カテゴリを非表示',
                  rulesStore: 'エンジン ストレージ',
                  import: '設定をインポート',
                  importFromClipboard: 'クリップボードからインポート',
                  exportTitle: 'JSON をエクスポート、クリックしてエンジンをエクスポート、長押ししてすべての構成データをエクスポート',
                  exportCache: 'アイコン キャッシュをエクスポート',
                  general: '一般設定',
                  searchEngines: '検索エンジン',
                  exportConfig: 'エクスポート',
                  presetGroupName: 'プリセットグループ名',
                  presetGroupValue: 'プリセットグループの内容',
                  addGroup: 'プリセットグループを追加',
                  addGroupTips: 'さまざまなシーンで繰り返し呼び出されるプリセットのハイライト単語のセットを追加します',
                  findInPage: 'ページ内を検索',
                  customSearch: 'カスタム検索',
                  about: '概要',
                  override: '現在の設定を上書きしますか?',
                  showInSearchEngine: '検索エンジン ページを強調表示',
                  showInSearchEngineTips: '検索エンジンの結果ページでキーワードを強調表示します',
                  showInSearchJumpPage: '検索エンジンから開かれたサイトを強調表示します',
                  showInSearchJumpPageTips: '検索エンジンをクリックして開いたページ上のキーワードを強調表示します',
                  currentTypeFirst: '現在のグループを固定',
                  currentTypeFirstTips: '有効にすると、現在のグループは最初の位置に移動します',
                  mouseLeaveToHide: 'マウスが離れると自動的に非表示になります',
                  mouseLeaveToHideTips: 'マウスが検索バーから離れると自動的に非表示になります',
                  limitInPageLen: 'キーワードの最小長を制限する',
                  limitInPageLenTips: 'この値よりも短いキーワードは強調表示しない',
                  ignoreWords: 'キーワードリストを無視',
                  inPageWordsStyles: 'キーワード スタイル',
                  inPageWordsAddStyles: 'カスタム キーワード CSS、各キーワードをターゲットとする配列を入力',
                  defaultPicker: '要素の選択を自動有効にする',
                  defaultPickerTips: '検索入力ボックスを開いたときに要素の選択を自動的に有効にする',
                  emptyAfterCloseInput: '閉じるときにハイライトをクリア',
                  emptyAfterCloseInputTips: '検索入力ボックスを閉じるときに強調表示されたキーワードをクリアします',
                  altToHighlight: 'Alt スワイプですぐにハイライト表示します',
                  altToHighlightTips: '検索入力でページ内検索機能を使用する場合、選択後すぐに Alt でハイライト表示します',
                  disableInputOnWords: '何かが選択されているときは検索入力はありません',
                  disableInputOnWordsTips: '何かが選択されているときにショートカット キーを使用して検索入力をポップアップ表示しない',
                  inPageRule: 'サイトの自動強調表示ルール',
                  errorNoType: 'カテゴリ名を入力してください',
                  errorSameType: '同じカテゴリ名が見つかりました',
                  editType: 'カテゴリを編集',
                  typeName: 'カテゴリ名',
                  typeIcon: 'カテゴリアイコン',
                  category: 'カテゴリ',
                  iconTips: 'アイコンには FontAwsome、画像リンク、または Base64 コードを使用できます',
                  typeMatch: 'マッチング サイト',
                  typeEnableSelTxt: 'テキストへの効果',
                  typeEnableSelImg: '画像への効果',
                  typeEnableSelAudio: 'オーディオへの効果',
                  typeEnableSelVideo: 'ビデオへの効果',
                  typeEnableSelLink: 'リンクへの効果',
                  typeEnableSelPage: 'ページへの効果',
                  typeOpenInNewTab: '有効にすると、このリンクのグループはデフォルトで新しいウィンドウで開かれます',
                  openSelect: 'オープンモード',
                  openInNewTabOption: '新しいタブで開く',
                  openInCurrentOption: '現在で開く',
                  openInBackOption: '背景タブで開く',
                  openInDefaultOption: 'デフォルトで開く',
                  openInIncognitoOption: 'シークレットウィンドウが開く',
                  openInMinWindowOption: '小窓が開く',
                  showCurrent: '現在のサイトを表示',
                  showCurrentTips: '一致した場合に現在のサイトボタンを表示',
                  delete: '削除',
                  deleteOk: '上から削除',
                  cancel: 'キャンセル',
                  edit: '編集',
                  add: '追加',
                  editSite: 'サイトを編集',
                  addSite: 'サイトを追加',
                  addType: 'タイプを追加',
                  siteName: 'サイト名',
                  siteUrl: 'サイト URL',
                  siteIcon: 'サイトアイコン',
                  siteKeywords: '検索キーワードを抽出',
                  keywordRegTips: '単一: wd、複数: wd|qw|key、RegExp グループ: (?:wd|w)/(.*?)\\b、セレクター: input#su',
                  kwFilter: 'フィルタリング',
                  kwFilterTips: '検索キーワードまたは URL をフィルタリング、オブジェクトの単語またはターゲット URL がこの正規表現と一致しない場合、エンジンを非表示にします',
                  siteMatch: 'マッチング サイト',
                  siteMatchTips: 'マッチング エンジンのサイトの URL RegExp、0 に設定して強制的に非表示',
                  siteCharset: '文字セット',
                  toolbarPosition: 'ツールバーの位置',
                  portrait: 'ポートレート',
                  horizontal: '水平',
                  openInNewTab: 'デフォルトでリンクを新しいタブで開きます',
                  openInNewTabTips: '有効にすると、リンクはデフォルトで新しいタブで開かれます',
                  enableInPage: '選択検索を有効にする',
                  enableInPageTips: '有効にした後、テキストを選択し、右マウスを長押ししてツールバーを表示します',
                  bindFunctionKey: 'このファンクション キーを右クリックすると、長押しせずに検索タイルを呼び出すことができます',
                  ctrlKey: 'Ctrl',
                  altKey: 'Alt',
                  shiftKey: 'Shift',
                  metaKey: 'Meta',
                  configContent: '構成ソースコード',
                  batchOpenconfirm: 'バッチ検索の確認',
                  batchOpenconfirmDefault: 'デフォルト',
                  batchOpenconfirmAlways: '常に確認',
                  batchOpenconfirmNo: '確認なし',
                  copy: 'コピー',
                  save: '保存',
                  autoClose: '自動終了タイプ',
                  autoDelay: '遅延を非表示',
                  needName: '名前が必要です',
                  needUrl: 'URLが必要',
                  wrongImg: '間違ったアイコン',
                  overOpen: 'マウスオーバーするとカテゴリが自動的に展開されます ',
                  overOpenTips: 'この項目を選択すると、マウスをカテゴリアイコンの上に移動すると、対応するカテゴリが自動的に展開されます',
                  selectToShow: 'タイルを選択して呼び出します',
                  selectToShowTips: '有効にした後、すぐにタイルを表示することを選択します',
                  autoCloseTips: '有効にすると、マウスが検索バーから離れると、開いているカテゴリドロワーが自動的に閉じられます',
                  shortcutOption: '検索エンジンのショートカット',
                  onEnginePage: '検索エンジンのページでのみ機能します',
                  shortcut: 'ショートカットキー',
                  siteShotcut: '検索ショートカット キー',
                  switchSitesKey: '現在のグループでのエンジン切り替えのショートカット キー。一致する場合のみ有効',
                  switchSitesPreKey: '前キーを切り替える',
                  switchSitesNextKey: '次のキーを切り替える',
                  initShow: '初期化ショー',
                  initShowTips: '初期化時に引き出して表示',
                  configPage: 'デフォルト設定ページ',
                  configPageTips: '現在のページをデフォルト設定ページとして設定します',
                  alwaysShow: 'ツールバーを常に表示',
                  alwaysShowTips: '一致するエンジンがない場合でもツールバーを表示',
                  presetCss: 'プリセット Css',
                  presetCssTips: 'プリセット CSS をロードするために選択',
                  customCss: 'カスタム Css',
                  replaceCss: '現在の CSS を置き換えることを確認しますか?',
                  enableInInput: '入力時に有効化',
                  enableInInputTips: '入力またはテキストエリアで SearchJumper を有効にする',
                  fontAwesomeCss: 'FontAwesome CDN URL',
                  bgUrl: '拡張モードの背景画像アドレス',
                  nobatch: 'バッチを開くときに開かない',
                  hideNotMatch: '最新でない場合は非表示',
                  typeMatchTips: '現在のグループを URL でフィルターし、URL が一致する場合にのみこのカテゴリを表示、0 に設定して非表示にします',
                  siteUrlTips: '%s キーワード; %t ターゲット URL; %u サイト URL; %h ホスト名',
                  customSize: 'ズームツールバー',
                  tilesZoom: 'タイルをズーム',
                  tipsZoom: 'ズームのヒント',
                  zoomDrag: 'ズームドラッグディスク',
                  typeOpenTime: 'カテゴリ展開時間',
                  longPressTime: '長押し時間',
                  typeShotcut: 'バッチを開くためのショートカット',
                  enableRightMouse: '右マウスによる効果',
                  enableRightMouseTips: 'ターゲット上でマウスの右ボタンを長押しした後の効果',
                  enableLeftMouse: '左マウスによる効果',
                  enableLeftMouseTips: 'ターゲット単語上でマウスの左ボタンをシングルクリックした後も効果があります',
                  enableMiddleMouse: '中マウスによる効果',
                  enableMiddleMouseTips: 'ターゲット単語の上でマウスの中ボタンをシングルクリックした後も効果があります',
                  longPressTile: '検索バーの代わりに検索タイルを使用',
                  longPressTileTips: '有効にすると、長押しによって表示される検索バーがタイルに置き換えられます',
                  hideTileType: 'タイル内のグループアイコンを非表示にする',
                  hideTileTypeTips: '有効にすると、タイル内のグループ アイコンが非表示になります',
                  cacheSwitch: 'アイコンをキャッシュ',
                  sameSiteName: '【#t#】以下のサイトは同じ名前です',
                  sameShortcut: '【#t#】 は既に同じショートカットをバインドしています',
                  noIcons: 'プレーンテキストモード',
                  noIconsTips: 'アイコンなしでプレーンテキストのみを表示',
                  showEngineWords: 'エンジン名を表示',
                  showEngineWordsTips: 'エンジン アイコンの横に名前を表示',
                  noAni: 'アニメーション効果を無効にする',
                  noAniTips: 'すべてのアニメーション効果を無効にする',
                  quickAddRule: 'サイトのクイック追加',
                  quickAddRuleTips: 'Ctrl + Alt を押して任意の検索入力ボックスをクリックすると、サイトをすばやく追加できます',
                  syncBuild: 'エンジンを追加するとすぐに有効になります',
                  syncBuildTips: '構成の変更をリッスンします。変更はエンジンの追加直後に有効になります。それ以外の場合は、ページが更新された後に有効になります',
                  searchMycroft: '💎 ワンクリックでインポートするために mycroftproject のサイト構成を検索',
                  showSiteLists: 'ドロップダウン リストを表示',
                  showSiteListsTips: '有効にすると、カテゴリ アイコンの横にあるドロップダウン リストが有効になります',
                  alwaysShowSiteLists: 'ドロップダウン リストを常に表示',
                  alwaysShowSiteListsTips: '有効にすると、カテゴリを開いたときでもドロップダウン リストが有効になります',
                  disableTypeOpen: 'カテゴリのクリックによる展開を無効にする',
                  disableTypeOpenTips: '有効にした後、カテゴリ アイコンをクリックしても展開されなくなります',
                  disableAutoHighlight: 'サイトの自動強調表示を無効にします',
                  historyLength: '履歴サイトの数',
                  historyLengthTips: '現在展開されているカテゴリの最後に、最近訪問したサイトをいくつか挿入します',
                  historyInsertFirst: '現在のグループの先頭に履歴サイトを挿入します',
                  historyInsertFirstTips: '最近アクセスしたサイトをグループの先頭に挿入し、それ以外の場合は最後に挿入します',
                  shiftLastusedType: '最後に使用したカテゴリを前方に移動',
                  shiftLastusedTypeTips: '最後に使用したグループを現在のカテゴリの後ろに移動します',
                  sortType: 'カテゴリを自動並べ替え',
                  sortTypeTips: '訪問数に応じてカテゴリを自動的に並べ替えます',
                  sortSite: '自動並べ替えエンジン',
                  sortSiteTips: '訪問数に応じてカテゴリ内のエンジンを自動的に並べ替えます',
                  multiline: '複数行のテキスト検索、改行で区切って、単一行で検索',
                  multilineLabel: 'スイッチ',
                  multilineGap: '検索ギャップ',
                  disable: '無効にする',
                  enable: '有効にする',
                  ask: '質問',
                  filterEngine: 'フィルター エンジン',
                  verifyResult: '結果の検証',
                  verifyBtn: 'すべてのエンジンの可用性を確認',
                  verifying: '検証中...',
                  verifyFinish: '検証が完了しました',
                  batchAction: 'バッチアクション',
                  selectAll: 'すべて選択',
                  invert: '反転',
                  deleteconfirm: 'これらのサイトを削除しますか?',
                  moveTo: '移動先',
                  moveToconfirm: 'これらのサイトを【#t#】に移動しますか?',
                  autoHide: 'バーを自動的に非表示にする',
                  autoHideTips: '前に設定した非表示遅延後に検索バーを自動的に非表示にします',
                  autoHideAll: '完全に非表示',
                  autoHideAllTips: '検索バーを完全に非表示にします',
                  unsetTips: '設定を解除',
                  resizePageTips: '非表示にせずにページのサイズを変更します',
                  minSizeMode: 'ミニマリスト モード',
                  minSizeModeTips: '検索バーを開いた後は、マウスを重ねるまで現在のカテゴリのみが表示されます',
                  dragToSearch: 'ドラッグによる検索を有効にする',
                  dragToSearchTips: 'テキスト、リンク、または画像をドラッグしてすばやく検索します。内側の円には現在のグループ (最初のテキスト/画像/リンク グループ) の上位 6 つのエンジンが含まれ、外側の円には最近使用したエンジンが含まれます',
                  sameSiteUrl: '同じ URL のサイトが見つかりました',
                  clone: 'クローン',
                  cloneconfirm: 'これらのサイトを【#t#】にクローン作成しますか?',
                  cloneAction: '単一サイトではなく 1 つのグループとしてクローンを作成しますか?',
                  groupName: 'グループ名',
                  donate: 'こんにちは！ 私は SearchJumper の作者、Hoothinです。\n\nSearchJumper を皆さんと共有できることを嬉しく思います。 これは完全にオープンソースで無料のプロジェクトです。 私はその開発にかなりの時間を費やしてきましたが、それが皆さんのお役に立ったと知ると、すべての価値があると感じています。\n\nもし、SearchJumper が有益であると感じて、私の取り組みをサポートしたいと思ったら、私は 以下の方法をご検討いただき、誠にありがとうございます。 あなたのサポートは、改善を続け、より良いサービスを提供し続ける動機になります。\n\n- 寄付: SearchJumper の将来の開発をサポートするために寄付を検討することができます。 たとえ小さな貢献であっても、私は大きな励みとインスピレーションを得ることができます。\n- フィードバックと共有: SearchJumper に関するフィードバックや提案がある場合、またはユーザー エクスペリエンスを他の人と共有したい場合は、非常に嬉しく思います。 あなたのフィードバックは、より多くの人々の利益のために SearchJumper を継続的に改善および最適化するのに役立ちます。\n- コミュニティへの参加: Discord チャンネルに参加して、洞察や経験を他のユーザーと共有することを歓迎します。 これは相互学習とサポートのためのプラットフォームであり、あなたの参加がその繁栄に貢献します。\n\nSearchJumper のサポートに改めて感謝いたします。 私は強化されたヘルプを提供し、このプロジェクトの改善に継続的に取り組むことに尽力します。 寄付と温かいお言葉に感謝いたします。 本当に感謝しています！',
                  share: '使用説明書',
                  importBookmarks: 'ブラウザのブックマークをインポート',
                  sync: 'WebDAV で同期',
                  host: 'ホスト',
                  username: 'ユーザー名',
                  password: 'パスワード',
                  path: 'パス',
                  syncTips: 'Webdav サーバーはカスタム cors をサポートする必要があり、allowed_hosts を追加する必要があります: https://hoothin.github.io。',
                  expandType: 'グループを展開',
                  expandTypeTips: 'グループを展開します。1 つのグループ内でエンジンを折りたたまないでください',
                  expandTypeLength: 'エンジン番号を表示',
                  expandTypeLengthTips: 'この数値を超えるエンジンを非表示にします',
                  jsonToolong: 'サイトのデータが長すぎます。json へのフォーマットを続けますか?',
                  imgTooBig: '画像が 50kb を超えています。スタックする可能性があります。それでもアップロードしますか?',
                  cacheSwitchTips: 'アイコンはバックグラウンドでbase64画像とともにキャッシュされます。キャッシュアクションの開始後にいくつかのクロスドメインリクエストがポップアップします',
                  searchFontawesome: '🚩 FontAwesome.com からカテゴリのアイコンを検索',
                  localAppAddBtn: 'ローカル アプリケーションを呼び出す',
                  localApp: 'ローカル アプリケーション呼び出し',
                  localAppCall: 'コマンドの呼び出し',
                  localAppName: 'カスタム呼び出しヘッダー、空白のままにすることができます',
                  localAppUnknowCall: 'このコマンドを解析できません。コマンドを確認するか、手動でレジストリを構築してください',
                  localAppWrongName: '通話ヘッダーには数字または文字のみを入力できます',
                  callInputKey: '検索入力を呼び出すためのショートカット キー',
                  showAllKey: 'すべて表示モードを呼び出すためのショートカット キー',
                  defaultFindTab: 'デフォルトでページ内検索を表示',
                  defaultFindTabTips: '検索入力が開かれると、デフォルトでページ内検索が表示されます。それ以外の場合は、デフォルトでサイト フィルターが表示されます',
                  globalSearchNow: 'すべてのタブをすぐに検索',
                  globalSearchNowTips: '強調表示された単語の [ピン] ボタンをクリックすると、すぐにすべてのタブでキーワードが検索されます。これはパフォーマンスに影響を与える可能性があります。慎重に開いてください',
                  geneRegFile: 'レジストリ パッチを生成',
                  dragHistory: 'ドラッグホイールの外輪',
                  hideDragHistoryTips: '過去に訪問したサイト 10 件を保存するドラッグ ホイールの外側のリングを非表示にします',
                  reuseDragHistoryTips: 'ドラッグ ホイールの外側のリングに現在のグループの 6 を超えるエンジンを表示し続けます',
                  disableAutoOpen: 'カテゴリの自動展開を無効にする',
                  disableAutoOpenTips: '有効にした後、検索バーが呼び出されたときに、カテゴリは自動的に展開されなくなります',
                  minPopup: '検索ポップアップを最小化する',
                  minPopupTips: '有効にすると、マウスオーバーするまでポップアップ ボックスにはカテゴリ アイコンのみが表示されます',
                  minPopupDisable: '無効にする',
                  minPopupEnable: '有効にする',
                  minPopupInput: '入力時のみ',
                  hidePopup: '検索ポップアップを無効にする',
                  hidePopupTips: 'ポップアップ ボックスを開くと無効になり、代わりに完全な検索バーが使用されます',
                  numPerLine: 'タイルの行ごとのエンジンの数',
                  numPerLineTips: 'タイルの各行に表示されるエンジンの数を設定します',
                  tileOffset: 'タイル オフセット',
                  tileOffsetTips: 'タイルを一定の距離だけオフセットして、他の単語選択拡張用のスペースを確保します。',
                  limitPopupLen: 'ポップアップの単語を制限します',
                  limitPopupLenTips: '選択した単語の長さがこれより短い場合、ポップアップ ボックスは表示されません',
                  hideOnSearchEngine: '検索エンジン ページで非表示',
                  hideOnSearchEngineTips: 'エンジン ページにツールバーを表示しない',
                  suggestType: '関連語源',
                  install: 'インストール',
                  allPage: 'すべてのエンジン',
                  allPageTips: 'https://search.hoothin.com/all?kw=keywords&engine=someengine&self=1 経由でブラウザ外から呼び出すことができます。詳細については Github を参照してください',
                  pinyinAddon: 'ピンイン',
                  spellAddon: 'スペル',
                  discord: 'Discord グループ',
                  templateTitle: 'テンプレートテキスト',
                  templateTips: '%template{テンプレート名} によって呼び出されるテンプレート テキストは、トークンとともに使用できます',
                  templateName: 'テンプレート名',
                  templateValue: 'テンプレート値',
                  freeWebdav: 'WebDAV 同期',
                  freeWebDavShare: '共有エンジン リスト',
                  freeWebdavconfirm: 'WebDav 同期を使用するためにアカウントを取得しますか? この機能はカジュアルな共有を目的としたものであり、安定して利用できることは保証されないことに注意してください。 違法な目的には使用しないでください。 安定性と制御性を求める場合は、独自の WebDav サーバーを構築してください。 ',
                  requestAccount: 'アカウントを申請しています。サーバーが発行するまで気長にお待ちください',
                  requestStatus: 'アカウントの現在のステータスを問い合わせています',
                  webdavDisabled: 'Webdav アカウントの有効期限が切れました',
                  closePopupWhenClick: 'メイン ウィンドウをクリックしたときに開く小さなウィンドウを閉じます',
                  closePopupWhenClickTips: '開く方法として小ウィンドウが選択されている場合、メイン ウィンドウをクリックすると、開いている小ウィンドウが閉じます',
                  rate: 'SearchJumper をご利用いただき、誠にありがとうございます。プラグイン ストアで 5 つ星の評価をしてください。これは私にとって大きな意味があります。ご質問やご提案がございましたら、いつでもお気軽にご連絡ください。',
                  popupSize: '小さなウィンドウの位置とサイズ',
                  popupWidth: '幅',
                  popupHeight: '高さ',
                  popupLeft: '左マージン',
                  popupTop: '上マージン',
                  query: 'クエリ',
                  shareText: '私の SearchJumper エンジン: https://search.hoothin.com/#t#',
                  shareTextPw: ' パスワード: #t#',
                  shareTips: '共有ページ: ',
                  sharePassword: 'パスワードを共有',
                  shareTitleword: 'タイトルを共有',
                  paramTitle: 'パラメータを検索',
                  param: 'パラメータ',
                  details: '詳細',
                  param_s: '検索キーワード',
                  param_S: 'キャッシュされた検索キーワード',
                  param_sl: 'キーワードを小文字で検索',
                  param_su: 'キーワードを大文字で検索',
                  param_sr: 'エンコードを行わずにキーワードを検索',
                  param_se: 'エスケープエンコーディングを使用してキーワードを検索',
                  param_e: '文字セット',
                  param_c: 'クライアント: PC、モバイル',
                  param_u: '現在のウェブサイトの URL は、リンクまたは画像を指す場合、対応する URL を意味します (リンク優先)。 %U: encodeURIComponent を使用',
                  param_h: '現在のウェブサイトホスト',
                  param_t: 'ターゲットのリンクまたは画像のアドレス (画像優先)。 %T: encodeURIComponent を使用',
                  param_b: 'http なしのターゲット アドレス。 %B: encodeURIComponent を使用',
                  param_n: 'ターゲットのタイトルまたは alt、または現在のページのタイトル',
                  param_i: 'ターゲット画像のBase64。 ターゲットが画像でない場合は、クリップボード画像の取得を試みます',
                  param_sre: 'キーワード/url/src を %sr.replace(/[^\\d]/g, "").replace(/(\\d)/g, "$1 ") のように正規表現に置き換えます。 生のキーワードを数値に結合し、すべての数値をスペースで結合します。%s %sl %sr %su %t %u をサポートします。',
                  param_ssplit: '複数行の検索パラメータ、%s[] は改行またはスペースで区切られた後、順番に次の項目を選択することを意味します、%s[-1] は逆の順序で次の項目を取得することを意味します、%s[0 ]は最初の項目を指定することを意味し、%s[all]は分割後にすべてを一括検索することを意味し、%s[1|@]は@で区切って2番目の項目を指定することを意味します。 %s[].replace(/(\\d)/,"a$1") などの置換をサポートします。 キーワードがない場合はクリップボードからキーワードを読み取ります',
                  param_p1: 'post本文、例: %p{x=1&y=%s}',
                  param_p2: 'ナビゲーションなしでpost',
                  param_p3: '#p{#input=%u&sleep(500)&click(.submit)} のようなセレクターまたは xpath によるページへのpostは、現在の URL を「#input」に入力し、500 ミリ秒待ってからクリックすることを意味します。 提出する"。 コンテンツでは & = の代わりに \\& \\= を使用してください。 wait(#input) は要素 #input が現れるのを待つことを意味し、wait(!.loading) は要素 .loading が消えるのを待つことを意味し、call(alert("Hello")) は await をサポートする評価コードalert("Hello") を意味します。 @ は入力中の activeElement を意味します',
                  param_input: '%input{愛している人?,あなた} のように何かを入力します。 / を使用してドロップダウン メニューを作成します (例: %input{カップ サイズを選択してください,A/B/C})。 説明を個別に追加することもできます。例: %input{カップ/レア/エクセレント/とても大きい,A/B/Cを選択してください}',
                  param_group: '作成したサイト名でバッチを開きます',
                  param_ele: 'セレクターまたは xpath からの innerText の要素のクエリ (%element{.mainTitle} など)、セレクターが設定されていない場合は選択された要素を返します',
                  param_elep: '%element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML) のような、クエリされた要素の prop 値を返します',
                  param_elere: '置換、上記と同様、%element{.mainTitle}.prop(href).replace(/https/i,"")',
                  param_cp: 'これを最初に置くと、その後のすべての単語がクリップボードにコピーされます',
                  param_paste: '入力ボックスの現在位置にテキストを貼り付けるには、先頭に「paste:」を使用します。パラメータが指定されていない場合は、デフォルトでクリップボードが読み取られます',
                  param_showTips: 'マウスホバー時に取得したHTMLコードをヒントに即座に表示します。配列が返された場合、2番目の項目はクリック後にコンテンツがコピーされることを意味します。2番目の項目がリンクの場合、クリック後に開きます。 クロスドメインでフェッチを使用したり、storage.getItem/storage.setItem を使用して永続データを操作したりできます。「name」は現在のエンジンの名前です。 簡易モードを使用して、テンプレートを使用してリンクを直接渡すこともできます。例: showTips:https://api.xxx.xxx/xxx <i>{json.result|*%s} USD = % ■ RMB</i> とは、api.xxx.xxx からデータを取得し、json 形式で解析し、json.result を <i> テンプレートに入れてヒントを返すことを意味します。 別の例: showTips:https://xxx.com/%sr <span>{title}</span><p>{.genre a|<mark>()</mark>}</p><img src ="https://xxx.com{a.bigImage>img|src}"/> これは、xxx.com からデータを取得し、ページ タイトルを取得し、すべての .genre a 要素の内容を反復処理して、マーク要素を個別に作成することを意味します。 、a.bigImage>img 画像の src を取得し、img 要素を作成します',
                  param_find: 'ページ内を検索して強調表示します (find:%s など)',
                  param_findadd: '強調表示されたプリセット グループにターゲット キーワードを追加します。たとえば、find.addto(reddit):%t.replace(/.*user/,"") は、 指定されたリンクを「@reddit」グループに追加します',
                  javascript: 'jsコードを実行します。window.keywordsはキーワードを表し、window.targetElementはポインティング要素を表します。 現在のページでインライン コードを実行できない場合は、新しい GreaseMonkey スクリプトを作成してコードを貼り付け、メソッドをウィンドウにエクスポートし、メソッド名を使用して呼び出すことができます。 たとえば、javascript:searchJumper_Function1',
                  param_date1: '現在のタイムスタンプ(ミリ秒)',
                  param_date2: '%date{/1000 +604800} など、現在のタイムスタンプに対して単純な計算を実行します。これは、1 週間後の秒単位で計算されたタイムスタンプを表します',
                  aboutContent: '仕事で検索エンジン ジャンプ機能を頻繁に使用しますが、多くの関連拡張機能を試した結果、ほとんどの機能にトロイの木馬が含まれていることがわかりました。\nこれは単なる単純な機能なので、自分で作成してみてはいかがでしょうか? \n その結果、構成ページの作成にはスクリプト自体の数倍のエネルギーが必要になります... 🤦‍\nこの検索エンジン ジャンプは、定義された場所でのドラッグ アンド ドロップをサポートし、サイト内検索、ワードマーキング検索、構成インポートもサポートしています。 そして輸出する。'
              }
              break;
          case 'ru':
              config = {
                  name: 'SearchJumper',
                  generalBehavior: 'Общее поведение',
                  appearance: 'Внешний вид',
                  searchRules: 'Поиск и правила',
                  shortcuts: 'Горячие клавиши',
                  dragDropSearch: 'Поиск перетаскиванием',
                  inPage: 'Поведение на странице',
                  lang: 'Язык',
                  setLang: 'Язык приложения',
                  outOfDate: 'Скрипт устарел, нажмите, чтобы обновить',
                  blacklist: 'Чёрный список',
                  description: 'Описание',
                  moreOptions: 'Больше функций',
                  showIcon: 'Показать группу',
                  hideIcon: 'Скрыть группу',
                  rulesStore: 'Движки других пользователей',
                  import: 'Импортировать конфигурацию',
                  importFromClipboard: 'Импортировать из буфера обмена',
                  exportTitle: 'Экспортировать JSON. Кликнуть единожды для экспорта движков, удерживать нажатие для экспорта всех настроек',
                  exportCache: 'Экспортировать кэш иконок',
                  general: 'Основные настройки',
                  searchEngines: 'Сайты-движки',
                  exportConfig: 'Настройки конфигурации',
                  presetGroupName: 'Название предустановленной группы',
                  presetGroupValue: 'Содержание предустановленной группы', //????????????????????????????????????????????????????????????
                  addGroup: 'Добавить предустановленную группу',
                  addGroupTips: 'Добавить набор предустановленных слов для выделения, которые будут вызываться многократно в разных сценах',
                  findInPage: 'Поиск по странице',
                  customSearch: 'Пользовательский поиск',
                  about: 'О расширении',
                  override: 'Хотите перезаписать текущую конфигурацию?',
                  showInSearchEngine: 'Подсвечивание ключевых слов на странице выдачи поисковика',
                  showInSearchEngineTips: 'Выделять разным цветом слова поискового запроса на странице результатов поисковой выдачи',
                  showInSearchJumpPage: 'Подсвечивание ключевых слов на сайте со страницы поисковой выдачи',
                  showInSearchJumpPageTips: 'Выделять разным цветом слова поискового запроса на сайте открытом со страницы поисковой выдачи',
                  currentTypeFirst: 'Закрепить текущую группу',
                  currentTypeFirstTips: 'После включения текущая группа переместится на первую позицию',
                  mouseLeaveToHide: 'Прятать Search bar меню автоматически',
                  mouseLeaveToHideTips: 'Search bar меню скрывается автоматически, если убрать курсор',
                  limitInPageLen: 'Минимальная длина слова для его выделения',
                  limitInPageLenTips: 'Не выделять цветом слово, длина которого меньше указанного значения',
                  ignoreWords: 'Список слов, которые будут проигнорированы при поиске по странице',
                  inPageWordsStyles: 'Стили ключевых слов',
                  inPageWordsAddStyles: 'Пользовательский стиль CSS. ',
                  defaultPicker: 'Автовключение инструмента выделения',
                  defaultPickerTips: 'Автоматически включается инструмент выделения области при входе в поисковое меню',
                  emptyAfterCloseInput: 'Очищать страницу после закрытия меню поиска по странице',
                  emptyAfterCloseInputTips: 'После закрытия меню поиска по странице все выделенные слова на ней будут очищены',
                  altToHighlight: 'Быстрое добавление слов в режиме поиска по странице',
                  altToHighlightTips: 'Для быстрого добавления слов в строку поиска по странице зажмите Alt и выделите нужное слово или предложение',
                  disableInputOnWords: 'Сокрытие поискового меню',
                  disableInputOnWordsTips: 'Не отображать поисковое меню, если на странице выделен какой-либо элемент (слово, изображение, ссылка)',
                  inPageRule: 'Правила автоподсветки слов на сайте',
                  errorNoType: 'Введите название группы!',
                  errorSameType: 'Found same group name',
                  editType: 'Редактировать группу',
                  typeName: 'Название группы',
                  typeIcon: 'Иконка группы',
                  category: 'Группа',
                  iconTips: 'Можно использовать FontAwsome, ссылку на иконку или base64 код',
                  typeMatch: 'Фильтровать группу по URL. Скрыть, установив 0', //????????????????????????????????????????????????????????????
                  typeEnableSelTxt: 'Эффект на тексте',
                  typeEnableSelImg: 'Эффект на изображении',
                  typeEnableSelAudio: 'Эффект на аудио',
                  typeEnableSelVideo: 'Эффект на видео',
                  typeEnableSelLink: 'Эффект на ссылке',
                  typeEnableSelPage: 'Эффект на странице',
                  typeOpenInNewTab: 'Эта группа ссылок по умолчанию будет открыта в новом окне', //????????????????????????????????????????????????????????????
                  openSelect: 'Режим открытия',
                  openInNewTabOption: 'Открыть в новой вкладке',
                  openInCurrentOption: 'Открыть в текущей вкладке',
                  openInBackOption: 'Открыть в фоне',
                  openInDefaultOption: 'Открыть по умолчанию',
                  openInIncognitoOption: 'Открыть в приватном режиме',
                  openInMinWindowOption: 'Открыть в мини-окне',
                  showCurrent: 'Show current site',
                  showCurrentTips: 'Show the site button of current when matched',
                  delete: 'Удалить',
                  deleteOk: 'Delete over',
                  cancel: 'Отменить',
                  edit: 'Редактировать',
                  add: 'Добавить',
                  editSite: 'Редактировать движок',
                  addSite: 'Создать движок',
                  addType: 'Создать группу',
                  siteName: 'Название',
                  siteUrl: 'URL сайта',
                  siteIcon: 'Иконка сайта',
                  siteKeywords: 'Извлечение ключевых слов поиска',
                  keywordRegTips: 'Single: wd, Multiple: wd|qw|key, RegExp group: (?:wd|w)/(.*?)\\b, Selector: input#su',
                  kwFilter: 'Filter regex',
                  kwFilterTips: 'Filter keywords or url, Hide the engine when the words or url does not match, Use @{sel} at the start to filter element matching the sel selector',
                  siteMatch: 'Match URL',
                  siteMatchTips: 'URL RegExp of site for matching engine, force hide by set to 0',
                  siteCharset: 'Кодировка',
                  toolbarPosition: 'Расположение Sidebar меню',
                  portrait: 'По вертикали',
                  horizontal: 'По горизонтали',
                  openInNewTab: 'По умолчанию открывать ссылки в новых вкладках',
                  openInNewTabTips: 'Если включено, открываемые ссылки будут загружаться по умолчанию в новых вкладках',
                  enableInPage: 'Выделить, чтобы искать',
                  enableInPageTips: 'Нажмите и удерживайте ПКМ на выделенном слове для вызова Sidebar меню',
                  bindFunctionKey: 'Нажмите горячую клавишу и ПКМ на объекте для вызова PopUp меню',
                  ctrlKey: 'Ctrl',
                  altKey: 'Alt',
                  shiftKey: 'Shift',
                  metaKey: 'Meta',
                  configContent: 'Config source code',
                  batchOpenConfirm: 'Подтверждение пакетного поиска',
                  batchOpenConfirmDefault: 'По умолчанию',
                  batchOpenConfirmAlways: 'Подтверждать всегда',
                  batchOpenConfirmNo: 'Не подтверждать',
                  copy: 'Копировать',
                  save: 'Сохранить',
                  autoClose: 'Автосворачивание группы',
                  autoDelay: 'Время ожидания',
                  needName: 'Нужно ввести название!',
                  needUrl: 'Нужно ввести URL!',
                  wrongImg: 'Неправильная иконка!',
                  overOpen: 'Автораскрытие группы движков при наведении курсора',
                  overOpenTips: 'При наведении курсора на иконку группы движков она автоматически раскрывается и остается в таком состоянии',
                  selectToShow: 'PopUp меню после выделения',
                  selectToShowTips: 'Показывать PopUp меню автоматически после выделения',
                  autoCloseTips: 'Сворачивать группу движков на Sidebar панели автоматически, когда курсор выйдет за её пределы',
                  shortcutOption: 'Сочетания клавиш поисковой системы',
                  onEnginePage: 'Работает только на страницах поисковых систем',
                  shortcut: 'Шорткат',
                  siteShotcut: 'Шорткат',
                  switchSitesKey: 'Шорткаты для переключения между движками в группе',
                  switchSitesPreKey: 'Предыдущий',
                  switchSitesNextKey: 'Следующий',
                  initShow: 'Init show',
                  initShowTips: 'Pull out to show when initializes',
                  configPage: 'Настройки страницы по умолчанию',
                  configPageTips: 'Вы можете иметь несколько страниц конфигурации, таких как localhost, фоновая страница расширения и онлайн страница конфигурации. Эта опция используется для установки текущей страницы конфигурации в качестве страницы конфигурации по умолчанию, которая будет загружаться при вызове меню.',
                  alwaysShow: 'Всегда отображать Search bar меню',
                  alwaysShowTips: 'Search bar меню всегда отображается на странице послее ее загрузки',
                  presetCss: 'Css пресет',
                  presetCssTips: 'Выбрать пресет Css для загрузки',
                  customCss: 'Пользовательский Css',
                  replaceCss: 'Потвердить замену Css?',
                  enableInInput: 'Включить для области ввода текста',
                  enableInInputTips: 'Активировать поисковые меню SearchJumper при выборе текста из области ввода (Работает не на всех сайтах)',
                  fontAwesomeCss: 'FontAwesome CDN URL',
                  bgUrl: 'URL картинки для страницы всех движков',
                  nobatch: 'Не использовать движок при групповом поиске',
                  hideNotMatch: 'Hide if not current',
                  typeMatchTips: 'Фильтровать текущую группу по URL. Показать группу только когда URL совпадает. Скрыть, установив 0',
                  siteUrlTips: '%s keywords; %t target URL; %u site URL; %h hostname',
                  customSize: 'Размер Sidebar меню',
                  tilesZoom: 'Размер PopUp меню',
                  tipsZoom: 'Размер подсказок',
                  zoomDrag: 'Размер круглого меню',
                  typeOpenTime: 'Время расширения группы',
                  longPressTime: 'Время нажатия',
                  typeShotcut: 'Шорткат группового поиска',
                  enableRightMouse: 'Эффект долгого нажатия ПКМ',
                  enableRightMouseTips: 'Вкл/выкл эффект от долгого нажатия ПКМ на объекте',
                  enableLeftMouse: 'Эффект клика ЛКМ',
                  enableLeftMouseTips: 'Появление PopUp меню при клике ЛКМ на выделенном объекте',
                  enableMiddleMouse: 'Эффект клика СКМ',
                  enableMiddleMouseTips: 'Появление PopUp меню при клике СКМ на выделенном объекте',
                  longPressTile: 'PopUp меню вместо Sidebar меню',
                  longPressTileTips: 'Показывать PopUp меню вместо Sidebar при длительном нажатия ПКМ на объекте',
                  hideTileType: 'Скрыть иконку группы в PopUp меню',
                  hideTileTypeTips: 'Иконка группы не будет отображаться при появлении PopUp меню',
                  cacheSwitch: 'Кэширование иконок',
                  sameSiteName: 'Site under 【#t#】 has the same name',
                  sameShortcut: 'У【#t#】уже есть такой шорткат',
                  noIcons: 'Текст вместо иконки',
                  noIconsTips: 'Вместо иконки движка отображать текст',
                  showEngineWords: 'Показать название движка',
                  showEngineWordsTips: 'Рядом с иконкой движка будет отображаться его название',
                  noAni: 'Отключение анимаций',
                  noAniTips: 'Отключить все эффекты анимаций',
                  quickAddRule: 'Быстрое добавление сайта-движка',
                  quickAddRuleTips: 'Чтобы быстро добавить новый движок, используйте сочетание Ctrl + Alt и клик ЛКМ в поле поиска сайта',
                  syncBuild: 'Моментальное применение конфигурации нового движка',
                  syncBuildTips: 'Если ативно, конфигурация нового движка начнет действовать незамедлительно. В противном случае изменения вступят в силу после перезагрузки страницы',
                  searchMycroft: '💎 Искать конфигурацию движков на mycroftproject для импорта одним кликом',
                  showSiteLists: 'Показать выпадающий список движков',
                  showSiteListsTips: 'При наведении на иконку группы движков появится выпадающий список всех движков данной группы',
                  alwaysShowSiteLists: 'Всегда показывать выпадающий список движков',
                  alwaysShowSiteListsTips: 'Показывать выпадающий список движков даже для открытой группы',
                  disableTypeOpen: 'Отключение раскрытия группы по клику',
                  disableTypeOpenTips: 'При нажатии на значок категории она больше не будет разворачиваться',
                  disableAutoHighlight: 'Отключить автоматическую подсветку сайтов. По одному на каждой строке',
                  historyLength: 'История недавних сайтов',
                  historyLengthTips: 'Вставляет несколько недавно посещенных сайтов в конец группы Sidebar меню текущего объекта (текста, изображения, ссылки)',
                  historyInsertFirst: 'Вставка недавних сайтов в начало группы',
                  historyInsertFirstTips: 'Вставляет недавно посещенные сайты в начало группы Sidebar меню текущего объекта',
                  shiftLastUsedType: 'Переместить вперед последнюю использованную группу',
                  shiftLastUsedTypeTips: 'Переместить последнюю использованную группу после текущей группы',
                  sortType: 'Автосортировка групп',
                  sortTypeTips: 'Автоматически изменять порядок категорий в зависимотси от количества посещений',
                  sortSite: 'Автосортировка движков',
                  sortSiteTips: 'Автоматическое изменение порядка расположения движков в группе в зависимости от количества посещений',
                  multiline: 'Многострочный поиск. При выделении блока текста, поиск будет производиться по каждому предложению отдельно',
                  multilineLabel: 'Переключить',
                  multilineGap: 'Задержка в поиске',
                  disable: 'Отключить',
                  enable: 'Включить',
                  ask: 'Спросить',
                  filterEngine: 'Фильтровать движки',
                  verifyResult: 'Verify result',
                  verifyBtn: 'Проверить доступность всех движков',
                  verifying: 'Проверка...',
                  verifyFinish: 'Проверка выполнена',
                  batchAction: 'Batch Action',
                  selectAll: 'Выбрать все',
                  invert: 'Инвертировать выбор',
                  deleteConfirm: 'Удалить выбранные сайты?',
                  moveTo: 'Переместить в',
                  moveToConfirm: 'Переместить эти сайты в【#t#】?',
                  autoHide: 'Автосворачивание Sidebar меню',
                  autoHideTips: 'Свернуть Search bar меню автоматически после временной задержки, установленной выше',
                  autoHideAll: 'Режим сокрытия Sidebar меню',
                  autoHideAllTips: 'Полностью скрыть',
                  unsetTips: 'Скрыть наполовину',
                  resizePageTips: 'Не скрывать',
                  minSizeMode: 'Минималистичный режим',
                  minSizeModeTips: 'В Sidebar меню будет отображаться только группа движков, соответствующая текущему объекту',
                  dragToSearch: 'Круглое меню поиска',
                  dragToSearchTips: 'Для быстрого поиска потяните за выделенный текст, изображение или ссылку. Во внутреннем кольце находятся топ-6 используемых движков в своей категории. Во внешнем кольце находятся самые используемые движки во всех группах',
                  sameSiteUrl: 'Found a site with same url',
                  clone: 'Клонировать',
                  cloneConfirm: 'Клонировать эти сайты в 【#t#】?',
                  cloneAction: 'Клонировать как одну группу, а не сайт?',
                  groupName: 'Название группы',
                  donate: 'Здравствуйте! Меня зовут Hoothin. Я являюсь автором SearchJumper. Я рад поделиться со всеми вами информацией о SearchJumper. Это полностью бесплатный проект с открытым исходным кодом. Несмотря на значительное количество времени, которое я потратил на его разработку, осознание того, что он оказался полезным для вас, делает все это стоящим того.\n\nЕсли SearchJumper оказался полезным для вас и вы хотите поддержать мои усилия, я был бы искренне благодарен вам за то, если бы вы рассмотрели следующие способы выразить мне благодарность. Ваша поддержка будет мотивировать меня продолжать совершенствоваться и предоставлять лучший сервис.\n\n- Пожертвования: Вы можете рассмотреть возможность сделать пожертвование, чтобы поддержать дальнейшее развитие SearchJumper. Даже небольшой вклад будет меня очень вдохновлять.\n' +
                      '- Обратная связь: Если у вас есть отзывы или предложения относительно SearchJumper или вы хотите поделиться своим пользовательским опытом с другими, я буду невероятно рад. Ваши отзывы помогут мне постоянно улучшать и оптимизировать SearchJumper на благо большего количества людей.\n' +
                      '- Участие в сообществе: Вы можете присоединиться к каналу Discord и поделиться своими мыслями и опытом с другими пользователями. Это платформа для взаимного обучения и поддержки, и ваше участие будет способствовать её процветанию.\n\nЕщё раз спасибо за поддержку! Я стремлюсь предоставлять постоянную помощь и постоянно работаю над улучшением этого проекта. Спасибо за ваши пожертвования и добрые слова, я их очень ценю!',
                  share: 'Краткое руководство',
                  importBookmarks: 'Импортировать закладки браузера',
                  sync: 'Синхронизировать с Webdav',
                  host: 'Хост',
                  username: 'Имя пользователя',
                  password: 'Пароль',
                  path: 'Путь',
                  syncTips: 'Webdav server need to support custom cors, add allowed_hosts: https://hoothin.github.io.',
                  expandType: 'Показывать группу целиком',
                  expandTypeTips: 'Разворачивать весь список движков при открытии группы в Sidebar меню',
                  expandTypeLength: 'Количество развёрнутых движков',
                  expandTypeLengthTips: 'Показать количество движков, соответствующее этому значению. Остальные движки будут в свернутом виде',
                  jsonToolong: 'The sites data is too long, do you want to continue format to json?',
                  imgTooBig: 'Изображение размером более 50 кб, поэтому возможны зависания. Вы все еще хотите загрузить его?',
                  cacheSwitchTips: 'Иконки будут кэшироваться с использованием base64-изображений в фоновом режиме. После запуска кэша появятся некоторые кросс-доменные запросы',
                  searchFontawesome: '🚩 Поиск иконок для групп на FontAwesome.com',
                  localAppAddBtn: 'Вызвать локальное приложение',
                  localApp: 'Вызов локального приложения',
                  localAppCall: 'Команда вызова',
                  localAppName: 'Пользовательский заголовок вызова. Можно оставить пустым',
                  localAppUnknowCall: 'Не удается выполнить синтаксический анализ этой команды, пожалуйста, проверьте ее или создайте реестр вручную',
                  localAppWrongName: 'В заголовке вызова можно вводить только цифры или буквы',
                  callInputKey: 'Шорткат для вызова поискового меню',
                  showAllKey: 'Шорткат для вызова режима просмотра всех движков',
                  defaultFindTab: 'Вкладка "Поиск по странице" по умолчанию',
                  defaultFindTabTips: 'Если включено, при вызове поискового меню (Ctrl + `) активной будет вкладка "Поиск по странице". В противном случае активной будет вкладка "Отфильтровать движки"',
                  globalSearchNow: 'Немедленный поиск по всем вкладкам',
                  globalSearchNowTips: 'При нажатии на кнопку Pin для выделенного слова происходит немедленный поиск ключевых слов во всех вкладках, что может повлиять на производительность, открывайте с осторожностью',
                  geneRegFile: 'Cоздать путь к реестру',
                  dragHistory: 'Внешнее кольцо круглого меню',
                  hideDragHistoryTips: 'Скрыть внешнее кольцо',
                  reuseDragHistoryTips: 'Отображает остальные движки из текущей группы по внешнем кольце',
                  disableAutoOpen: 'Отключить автораскрытие группы',
                  disableAutoOpenTips: 'При вызове Sidebar меню текущая группа больше не будет автоматически раскрываться',
                  minPopup: 'Минималистичный режим PopUp меню',
                  minPopupTips: 'Отображать в PopUp меню только иконку группы. При наведении курсора группа раскрывается',
                  minPopupDisable: 'Отключить',
                  minPopupEnable: 'Включить',
                  minPopupInput: 'Только для области ввода текста',
                  hidePopup: 'Отключение PopUp меню',
                  hidePopupTips: 'Вместо PopUp меню будет появляться Sidebar меню',
                  numPerLine: 'Количество движков в каждой строке PopUp меню',
                  numPerLineTips: 'Отображение количества движков в каждой строке PopUp меню задается установленным числом',
                  tileOffset: 'Смещение PopUp меню',
                  tileOffsetTips: 'Сместить вверх PopUp меню на выбранное количество пикселей',
                  limitPopupLen: 'Длина слов для появления PopUp меню',
                  limitPopupLenTips: 'Не отображать PopUp меню, если длина выделенного слова меньше указанной',
                  hideOnSearchEngine: 'Скрыть Sidebar меню на сайте-движке',
                  hideOnSearchEngineTips: 'При использовании любого движка Sidebar меню не будет появлятся на странице',
                  suggestType: 'Источник прогнозироания поискового запроса при его вводе в панеле поиска',
                  install: 'Установить',
                  allPage: 'Все сайты-движки',
                  allPageTips: 'Можно вызвать по ссылке https://search.hoothin.com/all?kw=keywords&engine=someengine&self=1. Для детальной информации посетите GitHub',
                  pinyinAddon: 'Pinyin аддон',
                  spellAddon: 'Spelling аддон',
                  discord: 'Группа автора в Discord',
                  templateTitle: 'Шаблонный текст',
                  templateTips: 'Шаблонный текст, вызываемый по %template{имя шаблона}, может использоваться с токенами',
                  templateName: 'Название шаблона',
                  templateValue: 'Значение шаблона',
                  freeWebdav: 'WebDAV синхронизация',
                  freeWebDavShare: 'Поделиться списком движков',
                  freeWebdavConfirm: 'Вы хотите получить бесплатную учетную запись для использования синхронизации WebDav? Обратите внимание, что эта функция предназначена для случайного обмена данными и не может гарантировать стабильность и доступность. Пожалуйста, не используйте ее в незаконных целях. Если вам нужна стабильность и управляемость, создайте свой собственный WebDav-сервер. ',
                  requestAccount: 'Подавая заявку на создание учетной записи, пожалуйста, терпеливо дождитесь, пока сервер выдаст её',
                  requestStatus: 'Запрос текущего статуса учетной записи',
                  webdavDisabled: 'Срок действия учетной записи Webdav истек',
                  closePopupWhenClick: 'Закройте маленькое окно, которое открывается при нажатии на главное окно',
                  closePopupWhenClickTips: 'Если в качестве метода открытия выбрано маленькое окно, щелчок по главному окну закроет открытое маленькое окно',
                  rate: 'Большое спасибо за использование SearchJumper и, пожалуйста, дайте мне пятизвездочный отзыв в магазине плагинов, это очень много значит для меня. Если у вас есть какие-либо вопросы или предложения, пожалуйста, свяжитесь со мной в любое время.',
                  popupSize: 'положение и размер маленького окна',
                  popupWidth: 'ширина',
                  popupHeight: 'высота',
                  popupLeft: 'левое поле',
                  popupTop: 'верхнее поле',
                  query: 'Запрос',
                  shareText: 'SearchJumper движки автора: https://search.hoothin.com/#t#',
                  shareTextPw: ' пароль: #t#',
                  shareTips: 'Sharing page: ',
                  sharePassword: 'Share password, can be empty',
                  shareTitleword: 'Share title, can be empty',
                  paramTitle: 'Параметры поиска',
                  param: 'Параметр',
                  details: 'Описание',
                  param_s: 'Search keyword',
                  param_S: 'Cached search keyword',
                  param_sl: 'Search keyword with lower case letters',
                  param_su: 'Search keyword with upper case letters',
                  param_sr: 'Search keyword without doing any encoding',
                  param_se: 'Search keyword with escape encoding',
                  param_e: 'Charset',
                  param_c: 'Client: pc,mobile',
                  param_u: 'Current website url, when pointing to a link or picture, it means the corresponding url (link first). %U: with encodeURIComponent',
                  param_h: 'Current website host',
                  param_t: 'The address of target link or image (image first). %T: with encodeURIComponent',
                  param_b: 'Target address without http. %B: with encodeURIComponent',
                  param_n: 'Title or alt of target or title of current page',
                  param_i: 'Base64 of target image. If the target is not image, will try to get the clipboard image',
                  param_sre: 'Replace keywords/url/src with regexp, like %sr.replace(/[^\\d]/g, "").replace(/(\\d)/g, "$1 ") means replace raw keywords to numbers and then join all numbers with space, support %s %sl %sr %su %t %u',
                  param_ssplit: 'Multi-line search parameters, %s[] means to select the next item in sequence after being separated by newline or space, %s[-1] means to get the next item in reverse order, %s[0] means to specify the first item, %s[all] means to batch search all after split, %s[1|@] means separated by @ and specifies the second item. Supports replace, for example %s[].replace(/(\\d)/,"a$1"). Will read keywords from clipboard if there is no one',
                  param_p1: 'Post body, like %p{x=1&y=%s}',
                  param_p2: 'Post without navigation',
                  param_p3: 'Post in page by selector or xpath, like #p{#input=%u&sleep(500)&click(.submit)}, means: input current url to "#input", then wait for 500ms, then click ".submit". use \\& \\= instead of & = in content. wait(#input) means wait for element #input appeared, wait(!.loading) means wait for element .loading disappeared, call(alert("Hello")) means eval code alert("Hello"), which support await. @ means activeElement while input',
                  param_input: 'Input something, like %input{love who?,you}.Use / to create a drop down menu, eg %input{Please select your cup size,A/B/C}. You can also add descriptions separately, for example %input{Please select your cup/rare/excellent/So big,A/B/C}',
                  param_group: 'Batch open by site name you\'ve created',
                  param_ele: 'Query element for innerText from selector or xpath, like %element{.mainTitle}, return selected elements if selector is not set',
                  param_elep: 'Return prop value for queried element, like %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML)',
                  param_elere: 'Replace, same as above, like %element{.mainTitle}.prop(href).replace(/https/i,"")',
                  param_cp: 'Put this at first then all words after will be copied to the clipboard',
                  param_paste: 'Use "paste:" at the beginning to paste the text to the current position in the input box. If no parameters are specified, the clipboard will be read by default',
                  param_showTips: 'Display the acquired html code in the tips immediately when the mouse hovers, if an array is returned, the second item means the content will be copied after click, if the second item is a link, it will open after click. you can use fetch with cross-domain, and use storage.getItem/storage.setItem to operate persistent data, "name" is the name of current engine. It is also possible to use the simplified mode and pass in the link directly with the template, for example: showTips:https://api.xxx.xxx/xxx <i>{json.result|*%s} USD = %s RMB</i>，it means grabbing data from api.xxx.xxx, parsing it in json format, and putting the json.result into the <i> template and returning the tips. Another example: showTips:https://xxx.com/%sr <span>{title}</span><p>{.genre a|<mark>()</mark>}</p><img src="https://xxx.com{a.bigImage>img|src}"/> which means grabbing data from xxx.com, get the page title, iterate through the contents of all .genre a elements and create mark elements separately, get the src of a.bigImage>img image and create img elements',
                  param_find: 'Find in page and highlight, such as find:%s',
                  param_findadd: 'Add the target keyword to the highlighted preset group, for example, find.addto(reddit):%t.replace(/.*user/,"") means to extract the parameters after the "user" in the specified link and add into "@reddit" group',
                  javascript: 'Execute js code, window.keywords represents keywords, window.targetElement represents the pointing element. If the current page cannot execute the inline code, you can create a new GreaseMonkey script and paste the code, export the method to window, and call it through the method name. For example javascript:searchJumper_Function1',
                  param_date1: 'Current timestamp(мс)',
                  param_date2: 'Perform simple calculations on the current timestamp, such as %date{/1000 +604800}, which represents a timestamp calculated in seconds after one week',
                  aboutContent: "В своей работе я очень часто использую функцию поиска слов по странице и переход по ним. Перепробовав множество других соответствующих расширений, я обнаружил, что большинство из них содержат вирусы\n" +
                      "Но это такая простая функция, так почему бы не написать ее самому?\n" +
                      "В результате написание страницы конфигурации занимает в несколько раз больше энергии, чем написание самого скрипта... 🤦‍\nМой скрипт для поиска слов и перехода между ними поддерживает перетаскивание с заданным местоположением, а также поиск по сайту, поиск по меткам слов, импорт и экспорт конфигурации."
              }
              break;        
          default:
              config = {
                  name: 'SearchJumper',
                  generalBehavior: 'General Behavior',
                  appearance: 'Appearance',
                  searchRules: 'Search and Rules',
                  shortcuts: 'Shortcuts',
                  dragDropSearch: 'Drag & Drop Search',
                  inPage: 'In-Page Behavior',
                  lang: 'Language',
                  setLang: 'Set language',
                  outOfDate: 'The script is out of date, click to update',
                  blacklist: 'Blacklist',
                  description: 'Description',
                  moreOptions: 'More options',
                  showIcon: 'Show group',
                  hideIcon: 'Hide group',
                  rulesStore: 'Engine storage',
                  import: 'Import config',
                  importFromClipboard: 'Import from clipboard',
                  exportTitle: 'Export JSON, click to export engines, hold to export all config data',
                  exportCache: 'Export icon cache',
                  general: 'General',
                  searchEngines: 'Search Engines',
                  exportConfig: 'Export Config',
                  presetGroupName: 'Preset group name',
                  presetGroupValue: 'Preset group content',
                  addGroup: 'Add preset group',
                  addGroupTips: 'Add a set of preset highlight words to be called repeatedly in different scenes',
                  findInPage: 'Find In Page',
                  customSearch: 'Custom Search',
                  about: 'About',
                  override: 'Do you want to overwrite the current configuration?',
                  showInSearchEngine: 'Highlight search engine page',
                  showInSearchEngineTips: 'Highlight keywords on the search engine results page',
                  showInSearchJumpPage: 'Highlight the site opened from the search engine',
                  showInSearchJumpPageTips: 'Highlight keywords on the page opened by click on the search engine',
                  currentTypeFirst: 'Stick current group',
                  currentTypeFirstTips: 'After enabled, current group will move to the first position',
                  mouseLeaveToHide: 'Automatically hide when mouse leaves',
                  mouseLeaveToHideTips: 'Automatically hide when mouse moves away from the search bar',
                  limitInPageLen: 'Limit the minimum length of keywords',
                  limitInPageLenTips: 'Do not highlight keywords whose length is less than this value',
                  ignoreWords: 'Ignore keyword list',
                  inPageWordsStyles: 'Keyword styles',
                  inPageWordsAddStyles: 'Custom keyword CSS, input an array target each keyword',
                  defaultPicker: 'Auto enable element selection',
                  defaultPickerTips: 'Automatically enable element selection when opening the search input box',
                  emptyAfterCloseInput: 'Clear the highlight when closing',
                  emptyAfterCloseInputTips: 'Clear the highlighted keywords when closing the search input box',
                  altToHighlight: 'Alt swipe to highlight immediately',
                  altToHighlightTips: 'When using the in-page search function under search input, highlight immediately with Alt after selection',
                  disableInputOnWords: 'No search input when something is selected',
                  disableInputOnWordsTips: 'Do not pop up the search input with shortcut key when something is selected',
                  inPageRule: 'Site auto-highlighting rules',
                  errorNoType: 'Please enter the group name',
                  errorSameType: 'Found same group name',
                  editType: 'Edit group',
                  typeName: 'Group name',
                  typeIcon: 'Group icon',
                  category: 'Group',
                  iconTips: 'The icon can use FontAwsome, image link or base64 code',
                  typeMatch: 'Filter current group by url, hide by set to 0',
                  typeEnableSelTxt: 'Point to text',
                  typeEnableSelImg: 'Point to image',
                  typeEnableSelAudio: 'Point to audio',
                  typeEnableSelVideo: 'Point to video',
                  typeEnableSelLink: 'Point to link',
                  typeEnableSelPage: 'Point to page',
                  typeOpenInNewTab: 'After enabling, this group of links will be opened in a new window by default',
                  openSelect: 'Open mode',
                  openInNewTabOption: 'Open in new tab',
                  openInCurrentOption: 'Open in current',
                  openInBackOption: 'Open in background',
                  openInDefaultOption: 'Open by default',
                  openInIncognitoOption: 'Open in incognito',
                  openInMinWindowOption: 'Open in mini window',
                  showCurrent: 'Show current site',
                  showCurrentTips: 'Show the site button of current when matched',
                  delete: 'Delete',
                  deleteOk: 'Delete over',
                  cancel: 'Cancel',
                  edit: 'Edit',
                  add: 'Add',
                  editSite: 'Edit site',
                  addSite: 'Add site',
                  addType: 'Add type',
                  siteName: 'Site name',
                  siteUrl: 'Site URL',
                  siteIcon: 'Site icon',
                  siteKeywords: 'Extract search keywords',
                  keywordRegTips: 'Single: wd, Multiple: wd|qw|key, RegExp group: (?:wd|w)/(.*?)\\b, Selector: input#su',
                  kwFilter: 'Filter regex',
                  kwFilterTips: 'Filter keywords or url, Hide the engine when the words or url does not match, Use @{sel} at the start to filter element matching the sel selector',
                  siteMatch: 'Match URL',
                  siteMatchTips: 'URL RegExp of site for matching engine, force hide by set to 0',
                  siteCharset: 'Charset',
                  toolbarPosition: 'Search bar position',
                  portrait: 'Portrait',
                  horizontal: 'Horizontal',
                  openInNewTab: 'Open links in new tabs by default',
                  openInNewTabTips: 'When enabled, the link will be opened in a new tab by default',
                  enableInPage: 'Enable select to search',
                  enableInPageTips: 'After enabling, select some text and long press the right mouse to bring up the Search bar',
                  bindFunctionKey: 'Right click with this function key to call out search tiles without long press',
                  ctrlKey: 'Ctrl key',
                  altKey: 'Alt key',
                  shiftKey: 'Shift key',
                  metaKey: 'Meta key',
                  configContent: 'Config source code',
                  batchOpenConfirm: 'Batch search confirm',
                  batchOpenConfirmDefault: 'Default',
                  batchOpenConfirmAlways: 'Always confirm',
                  batchOpenConfirmNo: 'Without confirm',
                  copy: 'Copy',
                  save: 'Save',
                  autoClose: 'Auto close type',
                  autoDelay: 'Hide delay',
                  needName: 'Require name',
                  needUrl: 'Require url',
                  wrongImg: 'Wrong icon',
                  overOpen: 'Mouse over to expand group automatically ',
                  overOpenTips: 'If you select this item, when the mouse moves over the group icon, the corresponding group will be automatically expanded',
                  selectToShow: 'Select to call tiles',
                  selectToShowTips: 'After enabling, select to bring up the tiles immediately',
                  autoCloseTips: 'When enabled, opened group drawer will be closed automatically once the mouse leaves the search bar',
                  shortcutOption: 'Search engine shortcuts',
                  onEnginePage: 'Only works on search engine pages',
                  shortcut: 'Shortcut key',
                  siteShotcut: 'Search shortcut key',
                  switchSitesKey: 'Shortcut key for engine switching in the current group, only valid when matching',
                  switchSitesPreKey: 'Switch prev key',
                  switchSitesNextKey: 'Switch next key',
                  initShow: 'Init show',
                  initShowTips: 'Pull out to show when initializes',
                  configPage: 'Default settings page',
                  configPageTips: 'Set the current page as the default settings page',
                  alwaysShow: 'Always show Search bar',
                  alwaysShowTips: 'Show Search bar even if no engine matches',
                  presetCss: 'Preset Css',
                  presetCssTips: 'Select to load preset css',
                  customCss: 'Custom Css',
                  replaceCss: 'Do you confirm to replace current css?',
                  enableInInput: 'Enable on input',
                  enableInInputTips: 'Enable SearchJumper on input or textarea',
                  fontAwesomeCss: 'FontAwesome CDN URL',
                  bgUrl: 'Background image url of Show-All-Mode',
                  nobatch: 'Do not open when batch open',
                  hideNotMatch: 'Hide if not current',
                  typeMatchTips: 'Filter current group by url, show this group only when url matches, hide by set to 0',
                  siteUrlTips: '%s keywords; %t target URL; %u site URL; %h hostname',
                  customSize: 'Zoom Search bar',
                  tilesZoom: 'Zoom tiles',
                  tipsZoom: 'Zoom tips',
                  zoomDrag: 'Zoom drag disc',
                  typeOpenTime: 'Group expansion time',
                  longPressTime: 'Long press time',
                  typeShotcut: 'Shortcut for batch open',
                  enableRightMouse: 'Effect with right mouse',
                  enableRightMouseTips: 'Effect after long press the right mouse button on target',
                  enableLeftMouse: 'Effect with left mouse',
                  enableLeftMouseTips: 'Also effect after single click the left mouse button on target words',
                  enableMiddleMouse: 'Effect with middle mouse',
                  enableMiddleMouseTips: 'Also effect after single click the middle mouse button on target words',
                  longPressTile: 'Use search tile instead of search bar',
                  longPressTileTips: 'When enabled, the search bar brought up by long press will be replaced with tiles',
                  hideTileType: 'Hide group icons in tiles',
                  hideTileTypeTips: 'When enabled, the group icons in the tiles will be hidden',
                  cacheSwitch: 'Cache icons',
                  sameSiteName: 'Site under 【#t#】 has the same name',
                  sameShortcut: '【#t#】 has already bind the same shortcut',
                  noIcons: 'Plain text mode',
                  noIconsTips: 'Show only plain text without any icon',
                  showEngineWords: 'Show engine name',
                  showEngineWordsTips: 'Show name beside the engine icon',
                  noAni: 'Disable animation effects',
                  noAniTips: 'Disable all animation effects',
                  quickAddRule: 'Quick Add Site',
                  quickAddRuleTips: 'Click any search input box with Ctrl + Alt to add site quickly',
                  syncBuild: 'Take effect immediately after adding an engine',
                  syncBuildTips: 'Listen for configuration changes and take effect immediately after adding an engine, otherwise it will take effect after the page is refreshed',
                  searchMycroft: '💎 Search site config on mycroftproject for import by one click',
                  showSiteLists: 'Show drop-down list',
                  showSiteListsTips: 'After enabled, the drop-down list will be enabled next to the group icon',
                  alwaysShowSiteLists: 'Always show drop-down lists',
                  alwaysShowSiteListsTips: 'After enabled, the drop-down list will be enabled even when group opened',
                  disableTypeOpen: 'Disable group click-to-expansion',
                  disableTypeOpenTips: 'After enabling, when the group icon is clicked, it will no longer be expanded',
                  disableAutoHighlight: 'Disable automatic highlighting of sites. One per line',
                  historyLength: 'Number of history sites',
                  historyLengthTips: 'Insert several recently visited sites at the end of current expanded group',
                  historyInsertFirst: 'Insert the history sites at the beginning of current group',
                  historyInsertFirstTips: 'Insert the most recently visited sites at the beginning of the group, otherwise at the end',
                  shiftLastUsedType: 'Move forward the last used group',
                  shiftLastUsedTypeTips: 'Move the last used group forward after the current group',
                  sortType: 'Auto sort groups',
                  sortTypeTips: 'Automatically reorder groups according to the number of visits',
                  sortSite: 'Auto sort engines',
                  sortSiteTips: 'Automatically reorder engines in group according to the number of visits',
                  multiline: 'Multi-line text search, separated by line feed, search by single line',
                  multilineLabel: 'Switch',
                  multilineGap: 'Search Gap',
                  disable: 'Disable',
                  enable: 'Enable',
                  ask: 'Ask',
                  filterEngine: 'Filter engine',
                  verifyResult: 'Verify result',
                  verifyBtn: 'Verify availability of all engines',
                  verifying: 'Verifying...',
                  verifyFinish: 'Verify complete',
                  batchAction: 'Batch Action',
                  selectAll: 'Select All',
                  invert: 'Invert',
                  deleteConfirm: 'Do you want to delete these sites?',
                  moveTo: 'Move to',
                  moveToConfirm: 'Do you want to move these sites to 【#t#】?',
                  autoHide: 'Auto hide bar',
                  autoHideTips: 'Auto hide search bar after hide delay set before',
                  autoHideAll: 'Completely hide',
                  autoHideAllTips: 'Hide the search bar completely',
                  unsetTips: 'Unset',
                  resizePageTips: 'Resize page without hide',
                  minSizeMode: 'Minimalist Mode',
                  minSizeModeTips: 'After opening, the search bar will only display the current group until the mouse is over',
                  dragToSearch: 'Enable drag to search',
                  dragToSearchTips: 'Drag text, link or image to search quickly, the inner circle contains the top 6 engines in the current group(first text/image/link group), and the outer circle contains the most recently used engines',
                  sameSiteUrl: 'Found a site with same url',
                  clone: 'Clone',
                  cloneConfirm: 'Do you want to clone these sites to 【#t#】?',
                  cloneAction: 'Do you want to clone as one group instead of a single site?',
                  groupName: 'Group Name',
                  donate: 'Hello there! I\'m Hoothin, the author of SearchJumper.\n\nI\'m delighted to share SearchJumper with all of you. It\'s a completely open-source and free project. Despite the considerable amount of time I\'ve invested in its development, knowing that it\'s been helpful to you makes it all worthwhile.\n\nIf you\'ve found SearchJumper beneficial and would like to support my efforts, I genuinely appreciate your consideration of the following ways to give me a shoutout. Your support will motivate me to keep improving and providing a better service.\n\n- Donations: You may consider making a donation to support the future development of SearchJumper. Even a small contribution will greatly encourage and inspire me.\n- Feedback and Sharing: If you have any feedback or suggestions regarding SearchJumper or would like to share your user experience with others, it would make me incredibly happy. Your feedback will help me continuously improve and optimize SearchJumper for the benefit of more people.\n- Community Engagement: You are welcome to join the Discord channel and share your insights and experiences with other users. It\'s a platform for mutual learning and support, and your participation will contribute to its thriving.\n\nOnce again, thank you for your support of SearchJumper! I\'m committed to providing you with an enhanced help and continuously working on improving this project. Thank you for your donations and kind words; I truly appreciate them!',
                  share: 'User manual',
                  importBookmarks: 'Import browser bookmarks',
                  sync: 'Sync by Webdav',
                  host: 'Host',
                  username: 'Username',
                  password: 'Password',
                  path: 'Path',
                  syncTips: 'Webdav server need to support custom cors, add allowed_hosts: https://hoothin.github.io.',
                  expandType: 'Expand group',
                  expandTypeTips: 'Expand group, Do not collapse engines in one group',
                  expandTypeLength: 'Show engines number',
                  expandTypeLengthTips: 'Hide the engines more than this number',
                  jsonToolong: 'The sites data is too long, do you want to continue format to json?',
                  imgTooBig: 'Image is larger than 50kb, will cause stuck, still want to upload?',
                  cacheSwitchTips: 'The icons will be cached with base64 images in the background, some cross-domain requests will pop up after cache action started',
                  searchFontawesome: '🚩 Search icons for group from FontAwesome.com',
                  localAppAddBtn: 'Call local application',
                  localApp: 'Local application call',
                  localAppCall: 'Call command',
                  localAppName: 'Custom call header, can be left blank',
                  localAppUnknowCall: 'Unable to parse this command, please check the command or manually construct the registry',
                  localAppWrongName: 'The call header can only enter with numbers or letters',
                  callInputKey: 'Shortcut key for calling out the search input',
                  showAllKey: 'Shortcut key for calling out Show-All-Mode',
                  defaultFindTab: 'Default to display find in page',
                  defaultFindTabTips: 'When the search input is opened, the find-in-page will be displayed by default, otherwise the site filter will be displayed by default',
                  globalSearchNow: 'Search all tabs immediately',
                  globalSearchNowTips: 'When clicking on Pin button for highlighted word, immediately search for keywords in all tabs, which may affect performance, open with caution',
                  geneRegFile: 'Generate registry patch',
                  dragHistory: 'Outer ring of the drag wheel',
                  hideDragHistoryTips: 'Hide the outer ring of the drag wheel which storing the last 10 historically visited sites',
                  reuseDragHistoryTips: 'Continues to display engines beyond 6 of current group in the outer ring of the drag wheel',
                  disableAutoOpen: 'Disable group auto-expansion',
                  disableAutoOpenTips: 'After enabling, when Search Bar is called up, group will no longer be expanded automatically',
                  minPopup: 'Minimize the search popup',
                  minPopupTips: 'When enabled, the popup box will only display a group icon until the mouse is over',
                  minPopupDisable: 'Disable',
                  minPopupEnable: 'Enable',
                  minPopupInput: 'Only on input',
                  hidePopup: 'Disable search popup',
                  hidePopupTips: 'After opening, the popup box will be disabled, and the full search bar will be used to replace it',
                  numPerLine: 'Number of engines per line of tile',
                  numPerLineTips: 'Set the number of engines displayed in each line of the tile',
                  tileOffset: 'tile offset',
                  tileOffsetTips: 'Offset the tiles by a certain distance to make room for other word selection extensions.',
                  limitPopupLen: 'Limit words for popup',
                  limitPopupLenTips: 'No popup box when length of selected words is less than this',
                  hideOnSearchEngine: 'Hide on search engine page',
                  hideOnSearchEngineTips: 'Don\'t show Search bar on engine page',
                  suggestType: 'Source of related words',
                  install: 'Install',
                  allPage: 'All engines',
                  allPageTips: 'Can be called outside the browser via https://search.hoothin.com/all?kw=keywords&engine=someengine&self=1, see Github for details',
                  pinyinAddon: 'Pinyin addon',
                  spellAddon: 'Spelling addon',
                  discord: 'Discord group',
                  templateTitle: 'Template text',
                  templateTips: 'Template text, call by %template{template name}, can be used with tokens',
                  templateName: 'Template Name',
                  templateValue: 'Template Value',
                  freeWebdav: 'Get WebDAV synchronization',
                  freeWebDavShare: 'Share engine list',
                  freeWebdavConfirm: 'Do you want to get a account to use the WebDav synchronization? Please note that this function is for casual sharing and cannot be guaranteed to be stable and available. Please do not use it for illegal purposes. If you want stability and controllability, please build your own WebDav server. ',
                  requestAccount: 'Applying for an account, please wait patiently for the server to issue',
                  requestStatus: 'Querying the current status of the account',
                  webdavDisabled: 'Webdav account has expired',
                  closePopupWhenClick: 'Close the mini popup window when clicking the main window',
                  closePopupWhenClickTips: 'When the mini popup window is selected as the opening method, clicking the main window will close the opened popup window',
                  rate: 'Thank you very much for using SearchJumper. I would greatly appreciate if you could leave a five-star review for the plugin on the Chrome store.',
                  popupSize: 'Mini popup window position and size',
                  popupWidth: 'Width',
                  popupHeight: 'Height',
                  popupLeft: 'Left margin',
                  popupTop: 'Top margin',
                  query: 'Query',
                  shareText: 'My SearchJumper engines: https://search.hoothin.com/#t#',
                  shareTextPw: ' password: #t#',
                  shareTips: 'Sharing page: ',
                  sharePassword: 'Share password, can be empty',
                  shareTitleword: 'Share title, can be empty',
                  paramTitle: 'Search params',
                  param: 'Param',
                  details: 'Details',
                  param_s: 'Search keyword',
                  param_S: 'Cached search keyword',
                  param_sl: 'Search keyword with lower case letters',
                  param_su: 'Search keyword with upper case letters',
                  param_sr: 'Search keyword without doing any encoding',
                  param_se: 'Search keyword with escape encoding',
                  param_e: 'Charset',
                  param_c: 'Client: pc,mobile',
                  param_u: 'Current website url, when pointing to a link or picture, it means the corresponding url (link first). %U: with encodeURIComponent',
                  param_h: 'Current website host',
                  param_t: 'The address of target link or image (image first). %T: with encodeURIComponent',
                  param_b: 'Target address without http. %B: with encodeURIComponent',
                  param_n: 'Title or alt of target or title of current page',
                  param_i: 'Base64 of target image. If the target is not image, will try to get the clipboard image',
                  param_sre: 'Replace keywords/url/src with regexp, like %sr.replace(/[^\\d]/g, "").replace(/(\\d)/g, "$1 ") means replace raw keywords to numbers and then join all numbers with space, support %s %sl %sr %su %t %u',
                  param_ssplit: 'Multi-line search parameters, %s[] means to select the next item in sequence after being separated by newline or space, %s[-1] means to get the next item in reverse order, %s[0] means to specify the first item, %s[all] means to batch search all after split, %s[1|@] means separated by @ and specifies the second item. Supports replace, for example %s[].replace(/(\\d)/,"a$1"). Will read keywords from clipboard if there is no one',
                  param_p1: 'Post body, like %p{x=1&y=%s}',
                  param_p2: 'Post without navigation',
                  param_p3: 'Post in page by selector or xpath, like #p{#input=%u&sleep(500)&click(.submit)}, means: input current url to "#input", then wait for 500ms, then click ".submit". use \\& \\= instead of & = in content. wait(#input) means wait for element #input appeared, wait(!.loading) means wait for element .loading disappeared, call(alert("Hello")) means eval code alert("Hello"), which support await. @ means activeElement while input',
                  param_input: 'Input something, like %input{love who?,you}.Use / to create a drop down menu, eg %input{Please select your cup size,A/B/C}. You can also add descriptions separately, for example %input{Please select your cup/rare/excellent/So big,A/B/C}',
                  param_group: 'Batch open by site name you\'ve created',
                  param_ele: 'Query element for innerText from selector or xpath, like %element{.mainTitle}, return selected elements if selector is not set',
                  param_elep: 'Return prop value for queried element, like %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML)',
                  param_elere: 'Replace, same as above, like %element{.mainTitle}.prop(href).replace(/https/i,"")',
                  param_cp: 'Put this at first then all words after will be copied to the clipboard',
                  param_paste: 'Use "paste:" at the beginning to paste the text to the current position in the input box. If no parameters are specified, the clipboard will be read by default',
                  param_showTips: 'Display the acquired html code in the tips immediately when the mouse hovers, if an array is returned, the second item means the content will be copied after click, if the second item is a link, it will open after click. you can use fetch with cross-domain, and use storage.getItem/storage.setItem to operate persistent data, "name" is the name of current engine. It is also possible to use the simplified mode and pass in the link directly with the template, for example: showTips:https://api.xxx.xxx/xxx <i>{json.result|*%s} USD = %s RMB</i>，it means grabbing data from api.xxx.xxx, parsing it in json format, and putting the json.result into the <i> template and returning the tips. Another example: showTips:https://xxx.com/%sr <span>{title}</span><p>{.genre a|<mark>()</mark>}</p><img src="https://xxx.com{a.bigImage>img|src}"/> which means grabbing data from xxx.com, get the page title, iterate through the contents of all .genre a elements and create mark elements separately, get the src of a.bigImage>img image and create img elements',
                  param_find: 'Find in page and highlight, such as find:%s',
                  param_findadd: 'Add the target keyword to the highlighted preset group, for example, find.addto(reddit):%t.replace(/.*user/,"") means to extract the parameters after the "user" in the specified link and add into "@reddit" group',
                  javascript: 'Execute js code, window.keywords represents keywords, window.targetElement represents the pointing element. If the current page cannot execute the inline code, you can create a new GreaseMonkey script and paste the code, export the method to window, and call it through the method name. For example javascript:searchJumper_Function1',
                  param_date1: 'Current timestamp(ms)',
                  param_date2: 'Perform simple calculations on the current timestamp, such as %date{/1000 +604800}, which represents a timestamp calculated in seconds after one week',
                  aboutContent: "I use the search engine jump function very frequently in my work, but I found that most of them contain trojans after tried many related extensions. \nThis is just a simple function, so why not write one by myself? \nThe result is that writing the configuration page takes several times more energy than the script itself... 🤦‍\nThis search engine jump supports dragging and dropping with defined location, and also supports in-site search, word-marking search, and configuration import and export."
              }
              break;
      }
}
window.i18n = (name, param) => {
      if (!config[name]) return name;
      if (Array.isArray(param)) {
        let result = config[name];
        param.forEach(p => {
          result = result.replace("#t#",p);
        });
        return result;
      } else {
        return config[name].replace("#t#",param);
      }
}
window.setLang(lang);

setTimeout(() => {
      if (!window.searchData) window.location.reload();
}, 15000);

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

reportWebVitals();
